每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用

Posted 我的Excel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用相关的知识,希望对你有一定的参考价值。

感谢每一个朋友的关注与支持,感谢所有的不离不弃,一路同行!

每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用

导读

前两天分享了一篇关于VBA与正则表达式的文章,里面写了如何利用VBA与正则表达式去除字符串中除中文之外的其他字符,只保留中文。

这两天有朋友问我如果要只保留数字或只保留字母该怎么办?所以今天村长再来补充一下其他正则表达式在VBA中的应用。

每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用

按ALT+F11弹出VBE窗口,然后新建模块,如下图:

每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用

只保留中文的代码如下:

Function ZW(i As String) As String

  Dim a As Object

  Set a = CreateObject("VBSCRIPT.REGEXP")

  a.Pattern = "[^\u4e00-\u9fa5]"

  a.IgnoreCase = True

  a.Global = True

  ZW = a.Replace(i, "")

  Set a = Nothing

End Function


只保留数字的代码如下:

Function SZ(i As String) As String

  Dim a As Object

  Set a = CreateObject("VBSCRIPT.REGEXP")

  a.Pattern = "[^0-9]"

  a.IgnoreCase = True

  a.Global = True

  SZ = a.Replace(i, "")

  Set a = Nothing

End Function


只保留字母的代码如下:

Function ZM(i As String) As String

  Dim a As Object

  Set a = CreateObject("VBSCRIPT.REGEXP")

  a.Pattern = "[^A-Z^a-z]"

  a.IgnoreCase = True

  a.Global = True

  ZM = a.Replace(i, "")

  Set a = Nothing

End Function


只保留数字和字母的代码如下:

Function SZZM(i As String) As String

  Dim a As Object

  Set a = CreateObject("VBSCRIPT.REGEXP")

  a.Pattern = "[^A-Z^a-z^0-9]"

  a.IgnoreCase = True

  a.Global = True

  SZZM = a.Replace(i, "")

  Set a = Nothing

End Function


保存完代码之后我们回到表格里面,在单元格输入我们刚才写的自定义函数,如下图:

每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用
每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用

坚持!坚持!再坚持!

致各位亲

每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用

每日一歌


羽泉《冷酷到底》

当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用

点击下方“阅读原文”查看更多
↓↓↓

以上是关于每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用的主要内容,如果未能解决你的问题,请参考以下文章

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

Excel-VBA正则表达式提取文本案例

一个可以使用多个正则表达式进行多次尝试匹配,并进行替换的Excel VBA自定义函数(UFD)

在VB6/VBA中使用正则表达式

vba程序从excel表格读取数据(数据量=2000行),程序运行时特别慢,怎么解决?

在 Excel 中使用正则表达式进行查找与替换