Excel 如何从文本列中提取哈希标记?

Excel 如何从文本列中提取哈希标记?,excel,tags,vlookup,identify,Excel,Tags,Vlookup,Identify,我有一张Excel表格,里面有一个描述栏。此列中的值通常包含0-3个标记,所有标记均以符号开头。有没有办法把所有这些标签都拉到列中 也许只有3个空白列,称为hashtag1、2、3,并将它们拉入每一列 将它们从描述列中删除,同时将它们拉出,这甚至都不重要 描述示例: "#0034 #lost client lost file" - pull out 0034 and lost "worker has bad quality #SusanB #quality"

我有一张Excel表格,里面有一个描述栏。此列中的值通常包含0-3个标记,所有标记均以符号开头。有没有办法把所有这些标签都拉到列中

也许只有3个空白列,称为hashtag1、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
我喜欢一个可以让你在Excel中使用正则表达式的扩展

没有这一点:

1是否找到分隔符字符的位置?在你的字符串中查找

2然后使用LEFT、MID和RIGHT将字符串分解为3列

3您可以使用MID而不是左右键删除

-

对于第一个标记,应该是这样的:

=LEFTA1,FIND,A1-1

-


希望这会有帮助

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

没有这一点:

1是否找到分隔符字符的位置?在你的字符串中查找

2然后使用LEFT、MID和RIGHT将字符串分解为3列

3您可以使用MID而不是左右键删除

-

对于第一个标记,应该是这样的:

=LEFTA1,FIND,A1-1

-


希望这会有帮助

假设列A是描述列,在A2中,第一个单元格带有hashtags 在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)

假设列A是描述列,在A2中,第一个单元格带有hashtags 在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)

这始终可以使用正则表达式来完成

在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+enter键。这将填充从函数getHashTags返回到所选单元格的变量

我希望这有帮助


PS:是的,要使其起作用,您还需要参考Microsoft VBScript正则表达式5.5库。

始终可以使用正则表达式完成此操作

在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+enter键。这将填充从函数getHashTags返回到所选单元格的变量

我希望这有帮助


PS:是的,要使其起作用,您还需要参考Microsoft VBScript正则表达式5.5库。

@pnuts简单,但绝对不是完整的解决方案。你的目标是什么?它不是一个完整的解决方案的主要原因是,我最终得到了很多列,这些列在标记后留下了描述。所以对于0888,jessej文件丢失变成了ColA:0888 ColB:jessej文件丢失。这不是描述文件丢失的colC@pnuts@pnuts简单,但绝对不是一个完整的解决方案。你的目标是什么?它不是一个完整的解决方案的主要原因是,我最终得到了很多列,这些列在标记后留下了描述。所以对于0888,jessej文件丢失变成了ColA:0888 ColB:jessej文件丢失。这不是描述文件丢失的colC@我很难让它工作。这是有潜力的,但我把所有的东西都放在左边,而不是右边。当我使用right函数时,我会从标签的左侧获取内容,并从右侧获取x个字符。我很难让它正常工作。这是有潜力的,但我把所有的东西都放在左边,而不是右边。当我使用right函数时,我会从标签的左边得到东西,也会从右边得到x个字符。这些可能很好,但它们不起作用。我将它们粘贴进去,并收到一条消息,说明公式中有错误。我不能轻易地理解它来发现问题。是的,艾弗罗。。。你是对的,为了消除单元格中的错误文本,我不会经常使用它,因为我不介意有关于输入或输出错误的信息……这些可能很好,但它们不起作用。我将它们粘贴进去,并收到一条消息,说明公式中有错误。我不能轻易地理解它来发现问题。是的,艾弗罗。。。你是对的,为了消除单元格中的错误文本,我不会经常使用它,因为我不介意有关于输入或输出错误的信息。。。