打开APP
userphoto
未登录

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

开通VIP
Excel中利用正则表达式拆分字符

先来一段惨不忍睹的数据源,敢继续玩下看吗?





Excel中拆分字符,通常我们会想到分列、VBAsplit方法等。


不过等你碰到无语的同事的时候就会感到那么捉急。比如1/2\3,1-2-3,1/2/3混合出现;此时心中千万只草泥马,但是问题我们还要解决。


先替换,然后拆分;写多个拆分语句等都能实现。

不过今天介绍的不是这些方法,我们要有逼格,装逼于无形,用正则去拆分

此时的你



1

先看动画效果




见到了效果,是不是要见代码呢?

Sub MySplit()

Dim Str, i%, k%, Rg As Range

Dim InputRg As Range, OutputRg As Range   ’定义变量,我就不废话了 input输入 output输出

 

With CreateObject('VBScript.RegExp')  

建立一个正则对象

Set InputRg = Application.InputBox('输入需要拆分的单元格', , , , , , , 8)  ’调用程序那个弹窗,可以选区域

Set OutputRg = Application.InputBox('输入需要输出的位置', , Selection.Address, , , , , 8) ’同上

    .IgnoreCase = True    ’设定参数,这是忽略大小写,根据自己情况调整

    .Pattern = '\d '     ’正则表达式,\d是数字型,也可以[0-9]。正则有随意的一面,又有严格的一面

    .Global = True    ’是否应用于全局,此外还有时候判断换行是否结束该段匹配的参数等。

    k = 0 ’计数的无名小卒,用于累加行号

    For Each Rg In InputRg ’循环输入区域的,本段代码针对一列,具体的请自行修改

        Set Str = .Execute(Rg) ’正则匹配这个单元格,放到str对象中

        For i = 0 To Str.Count – 1  ’循环读取匹配到的值

            Cells(OutputRg.Row k, OutputRg.Column i) = Str(i)   ’根据输出位置的行列写入表格

        Next

        k = k 1 ’给无名小卒累加

    Next

End With  ’装逼完成

 

End Sub

上图中第二种类型的匹配我们只要更改正则表达式即可:

.Pattern = '[a-z] \d '.IgnoreCase = True不改动,或者去掉忽略大小写后写.Pattern = '[a-zA-Z] \d '



图文作者:冥月※辰风(秋名山老司机)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C#正则表达式Regex类使用
Java字符串的常用方法
Excel VBA正则表达式 批量删除计算式内中文字符
正则表达式需要熟悉的几点
excel表中按照条件将一个表拆分城多个工作簿
「Python自动化Excel」Python与pandas字符串操作
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服