如何在 excel 中复制用 @ 书写的文本

How to copy text written with @ in excel

我有一个公式 -

  =CONCATENATE(IFERROR(TRIM(LEFT(SUBSTITUTE(MID(B4,FIND("~~",SUBSTITUTE(B4,"@","~~",1)),LEN(B4))," ",REPT(" ",100),1),100)),""),",",IFERROR(TRIM(LEFT(SUBSTITUTE(MID(B4,FIND("~~",SUBSTITUTE(B4,"@","~~",2)),LEN(B4))," ",REPT(" ",100),1),100)),""),",",IFERROR(TRIM(LEFT(SUBSTITUTE(MID(B4,FIND("~~",SUBSTITUTE(B4,"@","~~",3)),LEN(B4))," ",REPT(" ",100),1),100)),""))

但问题是它只能给出带有 @ 的行中最多 3 个单词的结果。例如,如果我有一行 - @Sun 在@solar 系统中是@beautiful 和@only @star。这将给出结果 - @sun @beautiful @only。但我想要一个公式,以便我可以从该行或段落中提取所有带有“@”的单词。请告诉我这在 excel 中是否可行,或者无论如何可以通过其他工具或任何网站

您可以使用 XPATH 的功能 starts-with()FILTERXML,从 Excel 2013 年开始可用,但不能 Excel 在线或 Excel Mac:

B1 中的公式使用 Excel O365:

=FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[starts-with(., '@')]")

如果您没有 Excel O365,您可能需要输入 INDEX:

=INDEX(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[starts-with(., '@')]"),ROW())`

当然,如果您需要连接所有值,例如逗号,您可以使用 TEXTJOIN:

=TEXTJOIN(",",1,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[starts-with(., '@')]"))

我在网上查到的公式 Excel 会更长,但你可以试试:

=TEXTJOIN(", ",1,IFERROR(MID(A1,IF(MID(A1,SEQUENCE(LEN(A1)),1)="@",SEQUENCE(LEN(A1)),""),FIND(" ",A1&" ",IF(MID(A1,SEQUENCE(LEN(A1)),1)="@",SEQUENCE(LEN(A1)),""))-IF(MID(A1,SEQUENCE(LEN(A1)),1)="@",SEQUENCE(LEN(A1)),"")),""))