通过位数提取excel中的数字

我有一个非常复杂的excel任务,我完全被困住了。 我试图从一个PDF页面提取一个7位数的整数,问题是它可以包围文本和其他任何一边不同长度的整数,唯一的唯一标识符是它将是7个字符在长度。 以下是该列的外观:

一个
3411491 $ 159
灰色5003195双人房$ 1,399
Stock Plus Navy 5020081

我怎样才能用公式将斜体的7位数字input到自己的单元格中?

您将需要使用正则expression式。

您需要引用(“工具”>“参考”)“Microsoft VBScript Regular Expressions 5.5”

尝试下面的代码,它应该给你你想要的,匹配任何7位数字的序列。 如果可能有多于7个数字的序列或多于7个数字的序列,则需要对其进行修改

Sub FindNumber() ' Reference: Microsoft VBScript Regular Expressions 5.5 Dim RegEx As Object ' VBScript_RegExp_55.regexp Dim MatchCol As MatchCollection Set RegEx = New RegExp With RegEx .Pattern = "(.*)([0-9]{7})(.*)" .IgnoreCase = True .Global = True End With For i = 1 To 3 Step 1 If RegEx.Test(ActiveSheet.Cells(i, 1).Value) Then Set MatchCol = RegEx.Execute(ActiveSheet.Cells(i, 1).Value) ActiveSheet.Cells(i, 2).Value = MatchCol(0).SubMatches(1) End If Next i End Sub 

按Alt + F11,将代码复制到一个空的模块中,检查工具/引用中的Microsoft VBScript正则expression式5.5选项,然后将其用作下一列中的用户定义函数。

 Function ExtractNum(c As String) As String With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(\b[\d]{7}\b)|.+?" If .Test(c) Then ExtractNum = Application.Trim(.Replace(c, "$1 ")) End With End Function