Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3150|回复: 4

[已解决]正则 替换 求优化

[复制链接]
发表于 2016-4-21 22:10 | 显示全部楼层 |阅读模式
本帖最后由 砂海 于 2016-4-21 22:12 编辑

替换 "=4*5 " 为"20"
感觉方法绕路了.
Function 替换计算(rg As Range)
    Dim regex As Object, rege, c, k, i
    Set regex = CreateObject("vbscript.regexp")

    替换计算 = rg.Value
With regex
        .Global = True
        .Pattern = "\=\d+\*\d+"
        Set rege = .Execute(替换计算)
End With
k = rege.Count

For i = 1 To k
With regex
        .Global = False
        .Pattern = "\=\d+\*\d+"
        Set rege = .Execute(替换计算)
        For Each c In rege
替换计算 = .Replace(替换计算, Evaluate(c.Value))
        Next c
End With
Next i
End Function

附件.rar (13.28 KB, 下载次数: 14)
发表于 2016-5-6 10:15 | 显示全部楼层    本楼为最佳答案   
  1. Function 替换(rng)
  2. Set regex = CreateObject("vbscript.regexp")
  3. 替换计算 = rng
  4. With regex
  5.     .Global = False
  6.     Do
  7.         .Pattern = "=\d+\*\d+"
  8.         If .test(替换计算) = False Then Exit Do
  9.         Set rege = .Execute(替换计算)
  10.         替换计算 = .Replace(替换计算, Evaluate("" & rege(0) & ""))
  11.     Loop
  12. End With
  13. 替换 = 替换计算
  14. End Function
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-5-6 11:10 | 显示全部楼层
datongye 发表于 2016-5-6 10:15

谢谢回复,简明解决问题了
回复

使用道具 举报

发表于 2016-5-6 11:11 | 显示全部楼层
  1. Sub Macro1()
  2. arr = [a1:a6]
  3. With CreateObject("vbscript.regexp")
  4.     .Pattern = "\=\d+\*\d+"
  5.     .Global = True
  6.     For i = 1 To UBound(arr)
  7.         For Each m In .Execute(arr(i, 1))
  8.             arr(i, 1) = Replace(arr(i, 1), m, Application.Evaluate("" & m))
  9.         Next
  10.     Next
  11. End With
  12. [a1:a6] = arr
  13. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-5-6 13:24 | 显示全部楼层
dsmch 发表于 2016-5-6 11:11

谢谢 !
去掉一个点 , replace 从正则方法 变成 函数.
路一下就通了 , 感受到 大侠的功力了.
搜到之前的replace 帖子 , 一并贴上


http://www.excelpx.com/forum.php ... p;highlight=Replace
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-9 13:59 , Processed in 0.309509 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表