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

How can I extract a text that has a specific pattern from a column of cells using EXCEL formula?

请帮忙,我有一个数据集,其中包含一列文本,其中包含用户提及及其推文。我想提取 EXCEL 中推文中提到的所有用户。换句话说,我想执行此任务:对于列中的每一行,如果该行的单元格值包含以 @ 开头并以 space 结尾的文本,则将该字符串值放在另一列中,每个单元格可能包含多次出现的字符串(推文中提到的不止一个用户)。问题是可以用 EXCEL 公式而不是编码吗?如果是,请您指导我应该使用哪个公式。如果不是,您知道完成此任务的好方法 way/method 吗?请不要向我发送文档链接,如果您有完成此任务的详细文档代码或知道可以执行此任务的 software/tool,那就太好了。提前感谢您的帮助。

这只是部分解决方案。它检索由“@”和单个 space 界定的文本的第一个实例。使用 A1 中的数据,在 B1 中输入:

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

例如:

我建议您将此任务分解为多列,以了解公式如何协同工作以得出您的答案。

列Headers

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)

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

您可以将以上所有内容混合成一个公式,但读起来会很吃力。

另外请记住,如果 "mention" 出现在字符串的末尾,上述公式将不会计算在内。也就是说,在您的问题中,您提到提及以 space 结尾,如果它发生在推文末尾,情况可能并非如此。

尽管用 [excel-vba] 标记,但您没有提供任何代码,并且在您的标题中确实有 公式,所以我建议:

  1. @ 替换为 |@,其中第一个字符是独特的(正在处理您的数据副本,select 所有,主页 > 编辑 - 查找 & Select, 替换..., 查找内容: @ 替换为: |@, 全部替换。)
  2. Select 相关列,DATA,文本到列,定界符,下一个,定界符其他:(仅)|,完成。
  3. 在第一个完全空的列中:

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

复制到与之前占用的列一样多的列,然后复制所有公式以适合。

这应该可以处理任何一个单元格中不确定数量的 @ 个实例,以及最后一个实例后面没有跟一个 space。