如何在Excel VBA 中使用正则表达式

 我来答
就烦条0o
2017-02-07 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
1
新建一个空白工作簿,在工作表界面按下组合快捷键Alt+F11或者右键单击任意一个工作表标签,在弹出的右键快捷菜单单击“查看代码”进入VBA编辑环境,如下图所示:
如何在Excel VBA 中使用正则表达式?
2
在“代码窗口“中复制粘贴以下代码:
Sub RegTest()
'定义正则表达式对象
Dim oRegExp As Object
'定义匹配字符串集合对象
Dim oMatches As Object
'创建正则表达式
'定义要执行正则查找的文本变量
Dim sText As String
sText = "这是v一个正则表达式b的范例程序a代码"
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
'设置是否匹配所有的符合项,True表示匹配所有, False表示仅匹配第一个符合项
.Global = True
'设置是否区分大小写,True表示不区分大小写, False表示区分大小写
.IgnoreCase = True
'设置要查找的字符模式
.Pattern = "[\u4e00-\u9fa5]+"
'判断是否可以找到匹配的字符,若可以则返回True
MsgBox .Test(sText)
'对字符串执行正则查找,返回所有的查找值的集合,若未找到,则为空
Set oMatches = .Execute(sText)
'把字符串中用正则找到的所有匹配字符替换为其它字符
MsgBox .Replace(sText, "")
End With
Set oRegExp = Nothing
Set oMatches = Nothing
End Sub
如下图所示:
如何在Excel VBA 中使用正则表达式?
3
执行以上代码,将把 sText = "这是v一个正则表达式b的范例程序a代码" 变量中的中文字符全部删除,将只返回"vba"3个英文字符,如下图所示。其中的.Pattern = "[\u4e00-\u9fa5]+"表示匹配所有中文字符,Pattern属性是正则表达式对象的核心,当需要执行其它查找替换时一般都只需更改Pattern属性即可。
如何在Excel VBA 中使用正则表达式?
4
一些常见的正则Pattern如下:
[0-9]表示匹配任意一个数字
[a-zA-Z]表示匹配任意一个英文字母
[\u4e00-\u9fa5]表示匹配任意一个中文字符
阳光上的桥
2017-02-07 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部

正则表达式进行模糊替换的例子代码:

Sub TestReplace()
Dim ss, re, rv 

ss = "12苏5a中国人民一二d三"& vbNewLine &"egg其d中国人民四a1五六"& vbNewLine&"凡dsf事都美国纽约AAFa分"& vbNewLine&"发的事都美国纽约A分Fa分" & vbNewLine     
Set re = New RegExp 
re.Pattern = "^\S+(中国人民|美国纽约)\S+$"     
re.Global = True     
re.IgnoreCase = True     
re.MultiLine = True 
rv = re.Replace(ss, "$1")     
MsgBox rv 
 
End Sub
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
渠振钟离傲冬
2019-05-19 · TA获得超过3771个赞
知道大有可为答主
回答量:3089
采纳率:31%
帮助的人:179万
展开全部
正则表达式,来自于《vba从入门到进阶80集完整版》,具体视频可在网上寻找,或继续追问索取。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式