打开APP
userphoto
未登录

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

开通VIP
Excel VBA 8.23 批量提取单元格中的中文 呼叫正则

批量提取单元格中的中文 呼叫正则


点击上方“Excel和VBA”,选择“置顶公众号”

致力于原创分享Excel的相关知识,源码,源文件打包提供

一起学习,一起进步~~


之前我们学习了如何批量提取单元格中的数字,并且深化了一下提取之后的结果的展示样式

今天我们继续前进,单元格的内容中,肯定不仅仅只有数字,还会有中文,那么今天就来学习下如何提取单元格的中文

场景说明

依然我们还是带入实际的操作场景

为了方便大家的衔接和对比学习,这里场景我们还是保持一致, 尽量不要有太明显的变动。

和上节一样的 操作场景,不过我们今天需要提取的是单元格中的中文

至于方法嘛

我们肯定还是倾向于选择使用正则

正则这么强大的嘛?不仅仅可以匹配数字,还可以匹配汉字?

确实是这样的,来看看代码

代码区

Sub chinese()Dim rng As Range, a As Range  Set rng = Application.InputBox("请选择单元格区域", "提取单元格的中文", , , , , , 8)For Each a In rng    MyStr = a.Value    ResultStr = ""    With CreateObject("VBSCRIPT.REGEXP")        .Pattern = "\W"        .IgnoreCase = True        .Global = True        If .test(MyStr) Then          For Each Item In .Execute(MyStr)            ResultStr = ResultStr & Item          Next Item          a.Offset(0, 1) = ResultStr        End If    End WithNext aEnd Sub

提取的方式,我们依然是选择通过正则来提取

乍一看代码,是不是和之前的代码,很相似,很类似

如果你能够得出这样的结论,那么恭喜你,证明你对正则的写法已经有了一个大概的轮廓了,事实上,确实是差不多,我么先看看效果

从效果上来看,还是达到了我们的要求,成功的提取出了中文,后面三行当初是数字+英文的搭配,并没有中文,所以也最终的结果是空值,非常完美。

代码解析

来进入今天的代码

今天的代码和我们之前8.20的代码是差不多的,唯一的不同之处就是正则表达式

那么经过上节课的学习,你现在应该知道正则表达式是哪一句代码了吧

.Pattern = "\W"

就是他。

之前我们提取数字的时候是怎么样写的呢?

.Pattern = "\d"

对比下就可以知道两句代码的差异了,"\W"在正则表达式中,代表的就是汉字,当然官方标准说法不是这样的,如果要标准的汉字的表达式,并不是这样写的,应该是"\u4E00-\u9FA5"

在用正则匹配汉字的时候,如果"\W"不行的话,可以使用"\u4E00-\u9FA5",后者更加标准,匹配效果也更加准确

留意到最后三行的结果为空,因为没有中文,所以匹配结果是不存在的,自然返回的就是空值了

重点:

要留意这里的W一定要是大写的,不能是小写的,正则表达式对于大小写的要求是非常严格的,至于为什么一定要是大写,留个悬念,下节便知!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel VBA 8.22 完善提取数字代码,正则是关键
完全手册Excel VBA典型实例大全:通过368个例子掌握
Excel之VBA常用功能应用篇:批量增加批注的逆操作,批量删除
在Excel中粘贴时怎样跳过隐藏行
在Excel中怎么提取一列中最后填入单元格的数?
Excel教程:统计加粗单元格个数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服