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
相关产品推荐
相关产品推荐

