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

比如字符串“柴塘河节制闸3300×4960平面钢闸门”我想得到3300余4960这两个整数,不知道如何提取.如何用正则表达式提取呢?... 比如字符串“柴塘河节制闸3300×4960平面钢闸门”
我想得到3300余4960这两个整数,不知道如何提取.
如何用正则表达式提取呢?
展开
 我来答
很多游戏
高粉答主

2019-09-27 · 游戏精通者,攻略技能点满
很多游戏
采纳数:91 获赞数:387006

向TA提问 私信TA
展开全部

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、然后运行就可以得到结果了。

鱼木混猪哟
高粉答主

2016-06-13 · 专注Office,尤其Excel和VBA
鱼木混猪哟
采纳数:6078 获赞数:33696

向TA提问 私信TA
展开全部

软件版本:Office2007

方法如下:

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

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cnbubble
推荐于2017-12-15 · TA获得超过2607个赞
知道大有可为答主
回答量:1990
采纳率:83%
帮助的人:770万
展开全部
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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e1af404
2016-06-07 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.1万
采纳率:59%
帮助的人:4064万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式