打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel vba 实例(8)- 利用正则表达式进行定向提取

本文转载自公众号:永恒君的百宝箱,作者:永恒君。

之前有介绍过正则表达式:正则表达式,查找、筛选数据的又一利器!

其实在VBA当中一样可以用正则表达式来匹配数据,看下面的实例:

有非常多中文、数字、字母混合在一起的字符串,需要分别提取出其中的中文、字母、数字,还有数字和字母。

今天要用到的是VBA的自定义函数的功能,顾名思义,就是我们自己编写一个函数,用法和excel自带的如sum,if函数是一样的。

先把代码贴出来,需要注意的有两点:

1、需要新建模块,把代码写在其中。不能直接写在sheet表中。

2、代码开头的ZW、SZ、ZM、SZZM即为自定义的函数名,都是各自独立的函数,调用的时候就是写它们。


'只保留中文的代码如下:

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


演示一下调用函数的结果:

同样的,永恒君直接把上面实例VBA的文件分享出来,需要的就直接使用吧。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
咕吧课堂:excel vba正则表达式就是这么玩的
从源代码中提取或过滤网页标签
《神奇的VBA》编程:获取硬件相关信息
asp的RegExp对象正则表达式功能用法
Excel VBA 8.19 Excel一次只能按照一种分隔符拆分 VBA可以多种
牛!花了24小时研究的Excel万能公式,真强大
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服