Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel中将所有@提及和#哈希标记从A列复制到B列和C列_Excel_Twitter_Extract_Vba - Fatal编程技术网

在Excel中将所有@提及和#哈希标记从A列复制到B列和C列

在Excel中将所有@提及和#哈希标记从A列复制到B列和C列,excel,twitter,extract,vba,Excel,Twitter,Extract,Vba,我有一个很大的推特数据库。大多数推特都有多个标签和@提及。我希望所有的#hashtag在一列中用空格分隔,所有@提及在另一列中。我已经知道如何提取第一次出现的#hashtag和@提词。但我不知道怎么把它们都弄到手?一些推特上有多达8个标签。手动浏览推文并复制/粘贴#hashtags和@references对于5000多条推文来说似乎是一项不可能完成的任务 这是我想要的一个例子。我有A列,我想要一个宏来填充B列和C列。(我在Windows和Excel 2010上) 我希望B列如下所示: Colum

我有一个很大的推特数据库。大多数推特都有多个标签和@提及。我希望所有的#hashtag在一列中用空格分隔,所有@提及在另一列中。我已经知道如何提取第一次出现的
#hashtag
@提词
。但我不知道怎么把它们都弄到手?一些推特上有多达8个标签。手动浏览推文并复制/粘贴#hashtags和@references对于5000多条推文来说似乎是一项不可能完成的任务

这是我想要的一个例子。我有A列,我想要一个宏来填充B列和C列。(我在Windows和Excel 2010上)

我希望B列如下所示:

Column B
--------
#DavidStern #Pop #Spurs
#mixlr #pop #dance
#Pop #Rock
#battleofthegenerations #Monkeys #DonnieOsman #Dubstep #Pop
#pop
C列如下所示:

Column C:
----------
@spurs @heat
@Nacho_xtreme
@EmilNow
@michaelbuble
@McKinzeepowell @m0ore21

考虑使用正则表达式

通过从
Tools->References
添加对
MicrosoftVBScript正则表达式5.5
的引用,可以在VBA中使用正则表达式

是一个很好的起点,有很多有用的链接。
已更新

添加对
正则表达式库的引用后,将以下函数放入VBA模块中:

然后,在单元格
B1
中输入以下公式(用于哈希标记):

在列
C1
中输入以下公式:

=JoinMatches(A1,"@")

现在,您可以一直复制公式。

您可以使用另一个字符@将文本转换为列,然后与for#s相对,然后将其余文本重新连接到列A,如果您不熟悉正则表达式,请参见(@Zev Spitz)

您要付多少钱:)?说真的,如果你能描述一下你所做的尝试和你的编程技能水平:创建宏、使用VBA、使用Excel对象模型和正则表达式,那会有所帮助。常见问题解答:你的问题应该合理界定范围。如果你能想象一整本书都能回答你的问题,那你问得太多了。。另外,请看。这与其说是回答,不如说是评论。
Public Function JoinMatches(text As String, start As String)
Dim re As New RegExp, matches As MatchCollection, match As match
re.pattern = start & "\w*"
re.Global = True
Set matches = re.Execute(text)
For Each match In matches
    JoinMatches = JoinMatches & " " & match.Value
Next
JoinMatches = Mid(JoinMatches, 2)
End Function
=JoinMatches(A1,"#")
=JoinMatches(A1,"@")