Excel从文本中查找字母数字字符串

时间:2014-06-17 08:22:58

标签: excel excel-vba excel-formula excel-2010 vba

我有一个包含多个字符串值的列,如句子。

在该句中,我想找到包含至少一个-的10个或更多字符的一个或所有字母数字值,并将结果值放在另一列中。

例如: 包含句子的列如下:

upgrade 15.07.2010, old No: WI82-01062. User moved to No: WI12-01012 02.04.2012 to a 2 user network.

Upgrade from lite 7/6/07, old No: PTX7-89C367EC5052-01211

理想情况下,我希望第一个示例的列为WI82-01062, WI12-01012,第二个示例为PTX7-89C367EC5052-01211

可能正在搜索字符串中的-,并且在两端找到blank space的第一个匹配项会有所帮助,但我没有任何线索如何在excel术语中写出来。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用这样的正则表达式(可能有更好的模式!):

Function ExtractData(r As Variant) As String
    Static oRE                      As Object
    Dim sTemp                       As String
    Dim n                           As Long
    Dim matches
    If oRE Is Nothing Then
        Set oRE = CreateObject("vbscript.regexp")
        With oRE
            .Pattern = "[A-Za-z0-9\-]{10,}"
            .Global = True
        End With
    End If
    Set matches = oRE.Execute(r)
    If matches.Count > 0 Then
        For n = 1 To matches.Count
            sTemp = sTemp & ", " & matches(n - 1)
        Next n
        ExtractData = Mid$(sTemp, 3)
    End If
End Function
相关问题