Excel-需要提取一个包含单元格中数字的计算机ID,无论其在句子中的位置如何

时间:2019-05-05 22:08:21

标签: excel excel-formula

这是我第一次在这里发布问题:)

不幸的是,当从企业票务系统中导出数据时,我们没有用于机器ID的特定列,而是具有“问题描述”列,其中包括问题的简短描述和机器ID。机器ID总是有数字,但可能只包含数字或数字前的2-4个字母,没有空格,例如:

XK2065

2092

BOZK10625

数字的数量可以变化,但永远不能超过六个。

2个问题描述示例:

1) XK2065 -未检测到问题,请进行调查。

2)请调查为什么未检测到问题,计算机ID为 XK2065 ,票号为1425778。

因此,问题在于单位ID可以位于句子中的任何位置,并且也只能包含数字或数字之前的2到4个字母。

是否具有可以提取计算机ID(无论位置在哪里)以及与数字相邻的开头字母(如果有)的功能?我想要的附加条件是位数不超过6,因为有时可能包括7位数的机票号码。

一个功能比VBA宏更好。

谢谢!

1 个答案:

答案 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

enter image description here