如何用VBA数组循环或Split函数提取单元格中的纯数字
实现方案:提取单元格中的纯数字
方法一:遍历字符保留所有数字
这种方法适配通用场景,无论数字在字符串的哪个位置,都会提取所有数字字符,适合格式不固定的情况。补全后的完整VBA代码如下:
Sub fixRequestNmrs() Dim bRange As Range Dim cell As Range Dim result As String Dim char As String Dim i As Integer ' 定位目标列(此处为第2列,即B列,可按需修改),仅处理非空单元格提升效率 Set bRange = Sheets(1).Columns(2).SpecialCells(xlCellTypeConstants) For Each cell In bRange result = "" ' 逐个检查单元格内容的每个字符 For i = 1 To Len(cell.Value) char = Mid(cell.Value, i, 1) ' 判断是否为数字,是则追加到结果字符串 If IsNumeric(char) Then result = result & char End If Next i ' 将提取后的纯数字写回单元格 cell.Value = result Next cell End Sub
方法二:利用Split提取"-"后的数字
如果确认所有目标单元格都包含且仅包含一个-,且-后方全是数字,这种方法更高效:
Sub extractAfterDash() Dim bRange As Range Dim cell As Range Dim splitArr As Variant Set bRange = Sheets(1).Columns(2).SpecialCells(xlCellTypeConstants) For Each cell In bRange ' 按"-"分割字符串为数组 splitArr = Split(cell.Value, "-") ' 确保分割后存在第二个元素(即原字符串包含"-") If UBound(splitArr) >= 1 Then cell.Value = splitArr(1) Else ' 无"-"时保留原内容,可根据需求改为清空(cell.Value = "") cell.Value = cell.Value End If Next cell End Sub
内容的提问来源于stack exchange,提问作者maliebina
相关产品推荐
相关产品推荐

