You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA如何从混合字符的字符串中提取纯数字数值

VBA从混合字符串中提取数字的实现方法

方案1:字符遍历法(无需额外引用)

兼容性最高,无需依赖任何额外库,通过逐字符判断筛选数字实现:

' 自定义提取数字工具函数
Function ExtractNumbers(strInput As String) As Long
    Dim i As Integer
    Dim strResult As String
    strResult = ""
    ' 遍历字符串所有字符
    For i = 1 To Len(strInput)
        ' 仅保留数字字符
        If IsNumeric(Mid(strInput, i, 1)) Then
            strResult = strResult & Mid(strInput, i, 1)
        End If
    Next i
    ' 无数字时返回0,否则转为长整型数值
    ExtractNumbers = IIf(strResult = "", 0, CLng(strResult))
End Function

调用示例

对应你的变量场景调用代码如下:

Sub TestExtract()
    Dim A As String, B As String
    A = "A23"
    B = "bd4"
    ' 立即窗口输出结果
    Debug.Print "A = " & ExtractNumbers(A)
    Debug.Print "B = " & ExtractNumbers(B)
End Sub

运行后输出结果完全匹配需求:

A = 23
B = 4

方案2:正则表达式法(代码更简洁,长文本处理效率更高)

适合批量处理大量字符串的场景,通过正则直接清除所有非数字字符实现:

Function ExtractNumbersByRegEx(strInput As String) As Long
    Dim regEx As Object
    ' 后期绑定正则对象,无需手动引用库
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Global = True
    ' 匹配所有非数字字符
    regEx.Pattern = "[^0-9]"
    ' 替换非数字字符为空后转数值
    ExtractNumbersByRegEx = CLng(regEx.Replace(strInput, ""))
End Function

调用方式和方案1完全一致。

内容的提问来源于stack exchange,提问作者Jagadeeshkumar Viswanathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:18:03