这是我第一次在这里发问:)
从我们的企业票务系统导出数据时,不幸的是,我们没有针对机器ID的特定列,而是有“问题描述”列,该列既包括对问题的简短描述,也包括机器ID。机器ID总是有数字,但在数字之前可能只包含数字或2-4个字母,没有空格,示例如下:
XK2065
2092
BOZK10625
数字的数目可以是不同的,但从来没有超过六个。
问题描述的两个例子:
1) XK2065 -问题未被发现,请进行调查。
2)请调查未发现问题的原因,机器ID为XK2065,票号为1425778。
因此,问题是单位ID可以定位在句子中的任何地方,并且可以在数字之前只包含数字或2到4个字母。
是否有一个函数可以提取机器ID,而不管位置如何,如果有数字,还有与数字相邻的起始字母?我想要的附加条件是数位数不超过6,因为有时票号可能包括7位数。
函数比VBA宏更可取。
提前感谢!
发布于 2019-05-06 11:19:06
这个函数应该使用正则表达式(如@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

https://stackoverflow.com/questions/55996832
复制相似问题