优秀的编程知识分享平台

网站首页 > 技术文章 正文

VBA如何找出工作表数据中的数字,简单到不用思考

nanyue 2024-12-27 15:45:50 技术文章 6 ℃

字符串操作是编程应用的一个最基本内容,很多时候都要和字符串进行一些处理。

在一些复杂的字符串中,有数字也有字母,还有特殊字符,如果我们想把字符串中的数字取出来,那就需要一些筛选功能。

本节介绍利用正则表达式对字符串操作的一些基本内容。

如上图所示,功能是将字符串中的数字取出来。

如果运用正则表达式来实现,实际上是一个很简单的操作,几乎没有什么难度可言。

问题在于如何来理解正则表达式的一些基本规则。

如下图可见,一些正则表达式字符代码。

代码

Private Sub GetNumbers()
Dim reg As Object, xNum As String, rSt As String, isTrue As Boolean
Dim x
Dim R As Range, xR As Range
Set xR = Range("B3:B13")
For Each R In xR
rSt = R.Value
Set reg = CreateObject("VBScript.RegExp")
    With reg
        .Global = True
        .IgnoreCase = True '大小写敏感
        .Pattern = "\D" '正则表达式
        xNum = .Replace(rSt, "")'把非数字替换成空
        R.Offset(0, 1).Value = xNum
    End With
Next R
End Sub

解释

新建一个正则表达式对象Reg:

Set reg = CreateObject("VBScript.RegExp")

属性

本示例中用到如下属性:

  1. Global属性: True or False, 指明模式是匹配整个字符串中所有与之相符的地方还是只匹配第一次出现的地方。默认值是False(表示只匹配第一次出现的地方)。
  2. Pattern属性:设置或返回用于搜索的正则表达式。
  3. IgnoreCase属性: True or False, 指明模式匹配是否大小写敏感。默认是False(表示搜索为大小写敏感)。

方法

Replace方法:替换在正则表达式搜索中找到的文本。

对照示例代码,就可以很容易地理解,取出数字的方法了。

重点

这里的重点就是代码:.Pattern = "\D" '正则表达式

"\D"就是代表筛选非数字。

如果换成"\d",就代表匹配数字。

更多关于正则表达式可仔细看上面的规则进行试验。

欢迎关注、收藏

---END---

Tags:

最近发表
标签列表