如何使用 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] 标记,但您没有提供任何代码,并且在您的标题中确实有 公式,所以我建议:
- 将
@
替换为 |@
,其中第一个字符是独特的(正在处理您的数据副本,select 所有,主页 > 编辑 - 查找 & Select, 替换..., 查找内容: @
替换为: |@
, 全部替换。)
- Select 相关列,DATA,文本到列,定界符,下一个,定界符其他:(仅)
|
,完成。
在第一个完全空的列中:
=IF(LEFT(A1)="@",LEFT(A1,FIND(" ",A1)),"")
复制到与之前占用的列一样多的列,然后复制所有公式以适合。
这应该可以处理任何一个单元格中不确定数量的 @
个实例,以及最后一个实例后面没有跟一个 space。
请帮忙,我有一个数据集,其中包含一列文本,其中包含用户提及及其推文。我想提取 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] 标记,但您没有提供任何代码,并且在您的标题中确实有 公式,所以我建议:
- 将
@
替换为|@
,其中第一个字符是独特的(正在处理您的数据副本,select 所有,主页 > 编辑 - 查找 & Select, 替换..., 查找内容:@
替换为:|@
, 全部替换。) - Select 相关列,DATA,文本到列,定界符,下一个,定界符其他:(仅)
|
,完成。 在第一个完全空的列中:
=IF(LEFT(A1)="@",LEFT(A1,FIND(" ",A1)),"")
复制到与之前占用的列一样多的列,然后复制所有公式以适合。
这应该可以处理任何一个单元格中不确定数量的 @
个实例,以及最后一个实例后面没有跟一个 space。