ExcelVBA8.21从单元格中提取数据你知道的最快方法是什么?

更新时间:2023-05-09 21:13:10 阅读: 评论:0

ExcelVBA8.21从单元格中提取数据你知道的最快⽅法是什么?
前景提要
前⼏天我收到了⼀个⼩伙伴的反馈,他表⽰希望能够针对单元格内容中数字的提取稍微说⼀下,单元格中内容的提取也是很常见的操作,如果数据量⼩的话,我们可以⽤最传统的⽅法,⼿⼯+⾁眼的⽅式来提取,但是如果碰到数据量⼤的话,就需要考虑⽤其他的⽅法了,这个其他,⾃然就是指VBA了。⼀起来看看
场景说明
简单的构造⼀下数据,常见的数字提取的场景,⽆外乎就是上⾯⼏种,数字在开头,或者结尾,或者中间,或者搭配中⽂,或者搭配英⽂,常规的就这样。
那我们就以这个数据源为引⼦,开启关于单元格内容提取的篇章吧,⽐⽅说提取中⽂,提取英⽂,电话。。。。
好了,撤的有点远了。
回归正题,我们⽤VBA将单元格中的数字提取出来
代码区
Sub sz()
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 = "\d"
.IgnoreCa = True
.Global = True
If .test(MyStr) Then
For Each Item In .Execute(MyStr)
ResultStr = ResultStr & Item
Next Item
a.Offt(0, 1) = ResultStr
End If
End With
Next a
End Sub
说到提取数字,你可能还是⼀点思路都没有
因为之前我们的操作都可以⽤VBA的⼀些常⽤⽅法来实现,但是这个提取数字。。。似乎没有
不过不着急,其实在之前讲解单元格拆分的时候,我们已经⽤过这个⽅法了,有没有印象,他就是正则先来看看代码的效果
整理来说,初步效果已经达到。
代码解析
前⾯已经说了,今天我们⽤到的⽅法,其实就是正则
也许很多⼩伙伴会⾮常希望讲解下VBA中正则的⽤法
我已经安排上了,后⾯会详细的讲解的,因为正则涉及的东西⽐较多,三⾔两语也说不清
这⾥⼤家就先学会这个⽅法
想要在VBA中使⽤正则,第⼀件事就是告诉VBA我要使⽤正则了,如何告诉呢?
With CreateObject("VBSCRIPT.REGEXP")
end with
既然正则都需要写表达式,那么我们现在就来看看表达式怎么写
.Pattern = "\d{"
.IgnoreCa = True
.Global = True
这三个就是正则表达式在VBA中的结构了
其中Pattern后⾯的就是正则表达式
IgnoreCa表⽰是否忽略⼤⼩写
Global则代表是否全局匹配
常规下,都是直接按照上⾯的模式写,只需要更改下pattern后⾯的正则表达式即可
这是套路
想要获得纯数字的结果,正则表达式就是"\d"
他就是匹配数字的
利⽤正则查找,他肯定会返回⼀个结果,这个结果我们就直接判断是否为空,如何判断If .test(MyStr) Then
For Each Item In .Execute(MyStr)
ResultStr = ResultStr & Item
Next Item
a.Offt(0, 1) = ResultStr
End If
下⾯这些就是基本套路了。套路这个东西,简单说,就是拿来⽤就好。
其中ResultStr就是最终返回的结果
有了结果,直接填⼊单元格中,这个简单操作,对⼤家来说都是so easy 啦。

本文发布于:2023-05-09 21:13:10,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/875973.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:提取   数字   正则   需要   内容   结果
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图