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

Excel中如何提取单元格内数字并移动至另一单元格(原单元格移除数字)

Excel提取单元格数字并移至另一单元格的方法

方法一:使用数组公式

假设原数据在A1单元格,要把数字提取到B1,同时清理原单元格中的数字(建议先完成提取再替换原单元格内容):

  1. 提取数字到目标单元格
    在B1输入以下数组公式,旧版Excel需按Ctrl+Shift+Enter确认,新版直接回车即可:
    =TEXTJOIN("",TRUE,IF(ISNUMBER(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)*1),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),""))

  2. 清理原单元格的数字
    在C1(或直接替换A1,操作前建议将B1的结果复制为值)输入以下数组公式:
    =TEXTJOIN("",TRUE,IF(NOT(ISNUMBER(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)*1)),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),""))

方法二:使用VBA宏(批量处理更高效)

如果需要批量处理多个单元格,用VBA宏更便捷:

  1. 按Alt+F11打开VBA编辑器
  2. 插入新模块,粘贴以下代码:
Sub ExtractNumbersAndClean()
    Dim sourceCell As Range, targetCell As Range
    Dim cellText As String, numStr As String, cleanStr As String
    Dim i As Integer
    
    ' 自行修改源单元格和目标单元格范围,示例为Sheet1的A1到B1
    Set sourceCell = ThisWorkbook.Sheets("Sheet1").Range("A1")
    Set targetCell = ThisWorkbook.Sheets("Sheet1").Range("B1")
    
    cellText = sourceCell.Value
    numStr = ""
    cleanStr = ""
    
    For i = 1 To Len(cellText)
        If IsNumeric(Mid(cellText, i, 1)) Then
            numStr = numStr & Mid(cellText, i, 1)
        Else
            cleanStr = cleanStr & Mid(cellText, i, 1)
        End If
    Next i
    
    targetCell.Value = numStr
    sourceCell.Value = cleanStr
End Sub
  1. 修改代码中的单元格范围后,运行宏即可完成提取和清理操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:45:43