从字符串中提取一系列参考号

时间:2017-07-29 20:55:05

标签: excel vba excel-vba access-vba ms-access-2010

我在数据库中有一个包含用户注释的字段。

这些评论有时包含订单参考编号,交货参考编号或承运人参考。订单参考遵循格式

  • X ##########
  • 交货参考:TR ######
  • 承运人参考:FC #####

这些引用被用户评论中的其他信息所包围,因此偶尔出现,没有固定的模式。

示例数据:"由于订单重复导致项目丢失X1234567890可能也是由于盗窃"

我想要做的是在我的表中创建3个额外的列,每个列对应一个,然后搜索用户注释并将这些引用提取到它们的正确列。

这将在Access中执行,但在excel中也是必需的。

任何人都可以帮助Visual Basic函数执行此操作吗?

请帮忙!我一直在拔头发!

1 个答案:

答案 0 :(得分:4)

您可以使用正则表达式。

以下函数返回VBA.Collection对。第一项对包含数字类型(X或TR或FC),第二项包含数字。

Public Function ParseComment(comment As String) As VBA.Collection

    Set ParseComment = New VBA.Collection

    Static RegExp As Object
    If RegExp Is Nothing Then
        Set RegExp = CreateObject("VBScript.RegExp")
            RegExp.IgnoreCase = True
            RegExp.Pattern = "\b(X|TR|FC)(\d+)\b"
            RegExp.Global = True
    End If

    Dim match As Object
    For Each match In RegExp.Execute(comment)
        ParseComment.Add Array(match.SubMatches(0), match.SubMatches(1))
    Next match

End Function