Excel中如何提取单元格内数字并移动至另一单元格(原单元格移除数字)
Excel提取单元格数字并移至另一单元格的方法
方法一:使用数组公式
假设原数据在A1单元格,要把数字提取到B1,同时清理原单元格中的数字(建议先完成提取再替换原单元格内容):
提取数字到目标单元格
在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),""))清理原单元格的数字
在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宏更便捷:
- 按
Alt+F11打开VBA编辑器 - 插入新模块,粘贴以下代码:
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
- 修改代码中的单元格范围后,运行宏即可完成提取和清理操作。
内容的提问来源于stack exchange,提问作者eastafricancoder
相关产品推荐
相关产品推荐

