我在数据库中有一个包含用户注释的字段。
这些评论有时包含订单参考编号,交货参考编号或承运人参考。订单参考遵循格式
这些引用被用户评论中的其他信息所包围,因此偶尔出现,没有固定的模式。
示例数据:"由于订单重复导致项目丢失X1234567890可能也是由于盗窃"
我想要做的是在我的表中创建3个额外的列,每个列对应一个,然后搜索用户注释并将这些引用提取到它们的正确列。
这将在Access中执行,但在excel中也是必需的。
任何人都可以帮助Visual Basic函数执行此操作吗?
请帮忙!我一直在拔头发!
答案 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