如何使用EXCEL公式从一列单元格中提取具有特定模式的文本?

请帮助,我有一个数据集,其中包含一列文字,其中包含用户提及和他们的鸣叫。 我想提取EXCEL中推文中提到的所有用户。 换句话说,我想要做这个任务:如果行的单元格值包含文本以@开始并以空格结束,则将该string值放在另一列中,对于列中的每一行,每个单元格可能包含更多而不是一个string(在推文中提到多个用户)。问题是EXCEL公式可能与编码没有关系吗? 如果是的话,请你指导我使用哪个公式。如果不是,你知道完成这个任务的好方法吗? 请不要给我链接文件,如果你有一个良好的文件代码来完成这项任务,或知道一个软件/工具,可以做到这一点将是伟大的。 感谢您的帮助提前。

我build议你把这个任务分解成多个列,了解这些公式如何一起工作来得到你的答案。

列标题

Column A = Your Data Column B = First Start = Find the first occurrence of @ Column C = First End = Find the end of the first occurrence with a space Column D = Second Start = Find the Second occurrence of @ Column E = Second End = Find the end of the second occurrence with a space Column F = First Twitter Account = MID the First Start/End Column G = Second Twitter Account = Mid the Second Start/End 

公式

 Column A = "An Example @Tweet with @two mentions" Column B = Find("@",A2) Column C = FIND(" ",A2,B2) Column D = FIND("@",A3,C3) Column E = FIND(" ",A3,D3) Column F = MID(A2,B2,C2-B2) Column G = MID(A2,D2,E2-D2) 

您可以根据需要重复上述的模式。 通过计算每个string中有多less个@符号,并确保编写足够的公式来容纳这个数字,您可以了解到这一点。

你可以把所有上述的东西都捣碎成一个公式,但是它会成为一个阅读的野兽。

请记住,如果在string的END处提到“提及”,则上述公式将不会计算在内。 也就是说,在你的问题中,你提到提到在一个空间结束,如果它发生在鸣叫结束可能不是这种情况。

这只是一个部分的解决scheme。 它检索由“@”和一个空格限定的文本的第一个实例。 用A1中的数据,在B1中input:

 =LEFT(MID(A1,FIND("@",A1)+1,9999),FIND(" ",MID(A1,FIND("@",A1)+1,9999))) 

例如:

在这里输入图像说明

尽pipe用[excel-vba]标记,你没有提供代码,并且在你的标题中有公式 ,所以我build议:

  1. @replace为|@ ,其中第一个字符是独特的(处理数据的副本,全选,HOME>编辑 – 查找和select,replace…,查找内容: @replace为: |@ ,全部replace。 )
  2. select相关的列,数据,文本到列,分隔符,下一个,分隔符其他:(仅) | ,完成。
  3. 在第一个完全空的列中:

     =IF(LEFT(A1)="@",LEFT(A1,FIND(" ",A1)),"") 

复制了之前被占用的许多列,然后将所有的公式复制下来以适应。

这应该处理任何一个单元格中不确定数量的@实例,也是最后一个实例之后没有空格的地方。