如何用excel中的VBA的正则表达式提取出字符串?

比如字符串“柴塘河节制闸3300×4960平面钢闸门”
我想得到3300余4960这两个整数,不知道如何提取.
如何用正则表达式提取呢?

1、首先打开需要编辑的Excel表格,进入到编辑页面中。

2、然后点击打开主菜单栏开发工具中的“Visual Basic”选项。

3、还可以鼠标右键单击工作标签,选择打开“查看代码”。

4、然后在弹出来的窗口中点击输入:

Function REFIND(str, re)

    Dim Reg As New RegExp

    With Reg

    .Global = True

    .Pattern = re

    Set matchs = .Execute(str)

        For Each Match In matchs

            y = y & " " & Match

        Next

    End With

    'MsgBox y

    REFIND = y

End Function

5、然后运行就可以得到结果了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-13

软件版本:Office2007

方法如下:

1.利用正则表达式,提取A列的数字,并对数字求和:

2.Alt+F11,输入代码如下:

3.F5执行代码,返回Excel,得到结果:

第2个回答  推荐于2017-12-15
Sub RegTest()
    Dim oRegExp As Object
    Dim oMatches As Object
    Dim sText As String
    sText = "柴塘河节制闸3300×4960平面钢闸门"
    Set oRegExp = CreateObject("vbscript.regexp")
    With oRegExp
        .Pattern = "\D+(\d+)\D+(\d+)\D+"
        Set oMatches = .Execute(sText)
        Debug.Print oMatches(0).submatches(0)    '第一个数
        Debug.Print oMatches(0).submatches(1)    '第二个数
    End With
    Set oRegExp = Nothing
    Set oMatches = Nothing
End Sub

程序中sText字符串来源可以从单元格赋值,

Debug.Print可以将两个数改为赋值给两个变量。

追问

假设两个变量分别赋值给BBB与HHH,应该如何完整的写代码?

追答

Debug.Print oMatches(0).submatches(0) '第一个数
Debug.Print oMatches(0).submatches(1) '第二个数
改成:
BBB=oMatches(0).submatches(0)
HHH=oMatches(0).submatches(1)
就行了,
可以对数据进行计算,如:
乘积=BBB*HHH

本回答被提问者采纳
第3个回答  2016-06-07
Sub t()
s = "柴塘河节制闸3300×4960平面钢闸门"
Set regxp = CreateObject("vbscript.regexp")
With regxp
.Global = True
.Pattern = "\d+"
For Each m In .Execute(s)
Debug.Print m
Next
End With
End Sub追问

具体的代码呢?

追答Sub t()
s = "柴塘河节制闸3300×4960平面钢闸门"
Set regxp = CreateObject("vbscript.regexp")
With regxp
    .Global = True
    .Pattern = "\d+"
    For Each m In .Execute(s)
        Debug.Print m
    Next
End With
End Sub

相似回答