通过数字位数提取埋在Excel中的数字

时间:2013-07-03 16:23:00

标签: excel excel-2007

我有一个非常复杂的excel任务,我完全被难过了。我试图从PDF的页面提取中提取一个7位整数,问题是它可以被文本和两侧不同长度的其他整数包围,唯一的唯一标识符是它将是7个字符长度。这是列的样子:

A
3411491 $ 159
灰色 5003195 Twin $ 1,399
股票加海军 5020081

如何使用公式将斜体的7位数字输入到自己的单元格中?

2 个答案:

答案 0 :(得分:1)

您需要使用正则表达式。

您需要参考(工具>参考)“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

答案 1 :(得分:0)

按Alt + F11,将代码复制到空模块,在工具/参考中选中Microsoft VBScript Regular Expressions 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