美文网首页excel的一些小技巧教程
Excel vba 实例(8)- 利用正则表达式进行定向提取

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

作者: 永恒君的百宝箱 | 来源:发表于2018-07-30 09:47 被阅读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的文件分享出来,需要的就直接使用吧。

    公号(见图片)后台回复“正则”即可。


    不少人对VBA代码有抵触心理,其实没有那么复杂,把他看成一个稍微复杂点的函数即可。

    当然如果并不打算深入学习VBA,只是临时使用下,那只要会复制黏贴就好了!

    至于怎么用VBA代码,可以参考之前的文章:

    Excel vba 实例(1) - 批量制作工资表头

    Excel vba 实例(2) - 批量将工作表拆分为单独文件

    Excel vba 实例(3) - 多个工作簿批量合并

    Excel vba 实例(4) - 根据已有名称,批量新建表格

    Excel vba 实例(5) - 快速合并n多个相同值的单元格

    Excel vba 实例(6) - 一键汇总多个sheet数据到总表

    Excel vba 实例(7)-一键批量打印工作簿


    Excel VBA功能很强大,但是要熟练的运用起来还是有一定的难度,好在永恒君帮大家搜集了几套关于VBA的视频教程,非常的实用。

    需要的话,公号(见图片)后台回复“VBA”获取吧~~

    欢迎交流!


    相关文章

      网友评论

        本文标题:Excel vba 实例(8)- 利用正则表达式进行定向提取

        本文链接:https://www.haomeiwen.com/subject/qxpxvftx.html