这是我第一次在这里发布问题:)
不幸的是,当从企业票务系统中导出数据时,我们没有用于机器ID的特定列,而是具有“问题描述”列,其中包括问题的简短描述和机器ID。机器ID总是有数字,但可能只包含数字或数字前的2-4个字母,没有空格,例如:
XK2065
2092
BOZK10625
数字的数量可以变化,但永远不能超过六个。
2个问题描述示例:
1) XK2065 -未检测到问题,请进行调查。
2)请调查为什么未检测到问题,计算机ID为 XK2065 ,票号为1425778。
因此,问题在于单位ID可以位于句子中的任何位置,并且也只能包含数字或数字之前的2到4个字母。
是否具有可以提取计算机ID(无论位置在哪里)以及与数字相邻的开头字母(如果有)的功能?我想要的附加条件是位数不超过6,因为有时可能包括7位数的机票号码。
一个功能比VBA宏更好。
谢谢!
答案 0 :(得分:0)
此函数应使用正则表达式(如建议的@RonRosenfeld)来满足您的需要:
Function RegExID(str As String) As String
Dim rgx As Object
Set rgx = CreateObject("VBScript.RegExp")
Dim allMatches As Object
With rgx
.Pattern = "\b[A-Z]{0,4}[\d]{4,6}\b"
.Global = True
.ignoreCase = True
.MultiLine = True
End With
Set allMatches = rgx.Execute(str)
For Each Item In allMatches
RegExID = Item.Value
Next
End Function