通过数字计数提取excel中隐藏的数字

通过数字计数提取excel中隐藏的数字,excel,excel-2007,Excel,Excel 2007,我有一个相当复杂的excel任务,我完全被难倒了。我试图从PDF的一个页面抓取一个7位数的整数,问题是它可以被文本和其他长度不同的整数包围,唯一的唯一标识符是长度为7个字符。以下是该列的外观: A 3411491美元159 灰色5003195双人床$1399 库存加海军5020081 如何使用公式将斜体7位数字取出并放入自己的单元格?您需要使用正则表达式 您需要参考(工具>参考)“Microsoft VBScript正则表达式5.5” 试试下面的代码,它会给你你想要的,匹配任何7位数的序列。如果

我有一个相当复杂的excel任务,我完全被难倒了。我试图从PDF的一个页面抓取一个7位数的整数,问题是它可以被文本和其他长度不同的整数包围,唯一的唯一标识符是长度为7个字符。以下是该列的外观:

A
3411491美元159
灰色5003195双人床$1399
库存加海军5020081


如何使用公式将斜体7位数字取出并放入自己的单元格?

您需要使用正则表达式

您需要参考(工具>参考)“Microsoft VBScript正则表达式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正则表达式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

在VBA中使用正则表达式。需要帮助吗?