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

时间:2015-04-07 19:54:24

标签: excel excel-vba twitter data-processing vba

请帮助,我有一个数据集,其中包含一列文本,其中包含用户提及及其推文。我想提取EXCEL中推文中提到的所有用户。换句话说,我想执行此任务:对于列中的每一行,如果行的单元格值包含以@开头并以空格结尾的文本,则将该字符串值放在另一列中,每个单元格可能包含更多比一个字符串的出现(在推文中提到的多个用户)。问题是可能与EXCEL公式有关而不是编码?如果是的话,请你指导我使用哪种配方..如果没有,你知道一个很好的方法/方法来完成这项任务吗?请不要向我发送文档链接,如果您有完整的代码来执行此任务,或者知道可以执行此操作的软件/工具,那将非常棒。感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

这只是部分解决方案。它检索由" @"界定的第一个文本实例。和一个空间。对于 A1 中的数据,在 B1 中输入:

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

例如:

enter image description here

答案 1 :(得分:2)

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

列标题

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)

您可以为尽可能多的&#34;提及重复上述模式。如所须。你可以通过计算每个字符串中有多少@符号来学习,并确保编写足够的公式来容纳这个数字。

你可以将上述所有内容混合成一个公式,但这将是一个野兽。

请记住,如果提及&#34;在字符串的END处生成,上面的公式将不计算它。即在你的问题中,你提到提及在一个空格中结束,如果它发生在推文的末尾,情况可能并非如此。

答案 2 :(得分:1)

虽然用[excel-vba]标记,但你没有提供代码,并且你的标题中有公式,所以我建议:

  1. @替换为|@,其中第一个字符与众不同(处理数据副本,选择全部,HOME&gt;编辑 - 查找和选择,替换...,查找什么:@替换为:|@,全部替换。)
  2. 选择相关列,DATA,Text to Columns,Delimited,Next,Delimiters Other :(仅)|,完成。
  3. 在第一个完全空的列中:

    =IF(LEFT(A1)="@",LEFT(A1,FIND(" ",A1)),"") 
    
  4. 复制了之前被占用的列数,然后将所有公式复制到适合的位置。

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