批量提取单元格中的中文 呼叫正则点击上方“Excel和VBA”,选择“置顶公众号” 致力于原创分享Excel的相关知识,源码,源文件打包提供 一起学习,一起进步~~ 今天我们继续学习单元格部分内容的提取,今天我们要学习的是提取出单元格中英文,前面学习了中文,数字的提取,今天我们来学习英文的提取 场景说明我们还是结合实际的场景来看看,还是使用上节我们使用的案例 从案例中,我们可以看到,除去前面两个单元格是没有英文的之外,其他的单元格内都有英文,并且有大小写的分别,我们如何将他们都提取出来呢? 代码区Sub allenglish() 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 = "[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 With Next a End Sub 一看到代码就知道,我们今天使用的方法还是正则,不错,单元格内容的提取,最强大的方法是正则 效果也是非常的明显,成功的提取出了英文字母,避开了所有的中文,数字等符号的干扰。 代码解析其实今天的代码,大家应该是能够独立看明白的,因为今天的核心,仅仅是更换了一句代码,就是正则表达式 .Pattern = "[a-zA-Z]" 通过这段代码,我们就可以成功的将所有的英文,不区分大小写的来获取了。非常的方便, 有没有感觉正则表达式其实在VBA中的运用非常的广泛? 没错,正则表达式在python,JAVA等编程语言中有非常管广泛的使用,同样在VBA中也是如此,比较常用的就是单元格内容的提取和拆分,我们这几天分享的提取功能,其实也就是正则的拆分功能。 接下来我们会深入讲解一些更加复杂一点的正则运用,能够提取/拆分出一些更加复杂,有比较常用的信息。 |
|