分享

Excel VBA 8.24 批量提取英文,区分大小写,你还是需要正则

 Excel和VBA 2021-09-13

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


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

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

一起学习,一起进步~~


今天我们继续学习单元格部分内容的提取,今天我们要学习的是提取出单元格中英文,前面学习了中文,数字的提取,今天我们来学习英文的提取

场景说明

我们还是结合实际的场景来看看,还是使用上节我们使用的案例

从案例中,我们可以看到,除去前面两个单元格是没有英文的之外,其他的单元格内都有英文,并且有大小写的分别,我们如何将他们都提取出来呢?

代码区

Sub allenglish()Dim rng As Range, a As RangeSet rng = Application.InputBox("请选择单元格区域", "提取单元格的中文", , , , , , 8)For Each a In rng    MyStr = a.Value    ResultStr = ""    With CreateObject("VBSCRIPT.REGEXP")        .Pattern = "[a-zA-Z]"        .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

一看到代码就知道,我们今天使用的方法还是正则,不错,单元格内容的提取,最强大的方法是正则

效果也是非常的明显,成功的提取出了英文字母,避开了所有的中文,数字等符号的干扰。

代码解析

其实今天的代码,大家应该是能够独立看明白的,因为今天的核心,仅仅是更换了一句代码,就是正则表达式

.Pattern = "[a-zA-Z]"

通过这段代码,我们就可以成功的将所有的英文,不区分大小写的来获取了。非常的方便,

有没有感觉正则表达式其实在VBA中的运用非常的广泛?

没错,正则表达式在python,JAVA等编程语言中有非常管广泛的使用,同样在VBA中也是如此,比较常用的就是单元格内容的提取和拆分,我们这几天分享的提取功能,其实也就是正则的拆分功能。

接下来我们会深入讲解一些更加复杂一点的正则运用,能够提取/拆分出一些更加复杂,有比较常用的信息。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多