-->

我怎么可以拉出来的井号标签文本列的?(How can I pull hashtags out of

2019-10-30 08:12发布

我有一个Excel工作表,其中有一个“描述”一栏。 在此列中的值通常包含0-3标签的任何地方,都开始以#符号。 有没有一种方法来把所有这些标签的出中列?

也许正像有3分空白列称为哈希标签1,2,3,和他们拉在每一列。

它从描述列,而将其拔出删除它甚至不是重要的。

描述的实施例:

"#0034 #lost client lost file"            - pull out 0034    and   lost  
"worker has bad quality #SusanB #quality" - pull out SusanB  and   quality  
"#0840 client complaint"                  - pull out 0840  
"lots of ipsum"                           - pull out       nothing

Answer 1:

比方说,A列是描述列,而在A2你有井号标签的第一个单元格
在B2中输入:

=MID(A2;(FIND("#";A2))+1;(FIND(" ";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))-(FIND("#";A2))-1)

在C2中输入:

=MID(A2;(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))+1;(FIND(" ";MID(A2;(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))+1;LEN(A2)-(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))))+(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2))))-(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))-1)

在D2中输入:

=MID(A2;(FIND("#";MID(A2;(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))+1;LEN(A2)-(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))))+(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2))))+1;(FIND(" ";MID(A2;(FIND("#";MID(A2;(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))+1;LEN(A2)-(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))))+(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2))))+1;LEN(A2)-(FIND("#";MID(A2;(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))+1;LEN(A2)-(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))))+(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2))))))+(FIND("#";MID(A2;(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))+1;LEN(A2)-(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))))+(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))))-(FIND("#";MID(A2;(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))+1;LEN(A2)-(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2)))))+(FIND("#";MID(A2;(FIND("#";A2))+1;LEN(A2)-(FIND("#";A2))))+(FIND("#";A2))))-1)


Answer 2:

我喜欢的扩展,可以让你在Excel中使用正则表达式的...

如果没有这个:

1)找到分隔符(#?)的位置在你的字符串FIND()

2),然后使用LEFT(),MID()和RIGHT()到您的字符串爆炸成3列

3)你可以删除使用MID(#的)而不是左()和右()

-

这将是这样的,用于与#第一个标签:

= LEFT(A1,FIND( “#”,A1)-1)

-

希望这将有助于!



Answer 3:

这总是可以使用正则表达式来完成。

在VBE,下面写一个模块中的功能:

Function getHashTags(rng As Range) As Variant
    Dim regEx As RegExp
    Set regEx = New RegExp
    regEx.Pattern = "#\w*\b"
    regEx.IgnoreCase = True
    regEx.Global = True
    Set myMatches = regEx.Execute(rng.Value)
    Dim arr(1 To 1, 1 To 3) As Variant
    For i = 1 To 3
        If i > myMatches.Count Then
            arr(1, i) = ""
        Else
            arr(1, i) = Replace(myMatches(i - 1), "#", "")
        End If
    Next i
    getHashTags = arr
End Function

现在,让我们假设A列是描述列,并在单元格A2你有哈希标签的第一个单元格。

在B2单元格中输入验证:

=getHashTags(B$2)

现在选择单元B2,C2,D2,按F2键,然后CTRL + SHIFT + 输入 。 这将填充从功能的变种回报getHashTags选定的单元格。

我希望这有帮助。

PS:还有,对这个工作你还需要给参考微软的VBScript正则表达式5.5库。



文章来源: How can I pull hashtags out of a text column?