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

Excel宏:如何从含其他数字的文本中剔除货币金额?

在Excel中剔除单元格内的价格金额并保留换行格式

针对你遇到的问题——要剔除单元格内带$或.的价格、保留其他数字和换行格式,下面提供两种可行方案:

方案一:VBA自定义函数(推荐,适配复杂格式)

如果你的Excel允许启用宏,用正则表达式处理是最灵活的方式,能覆盖各种货币格式(带$、逗号、小数点的金额),同时保留原换行结构。

步骤:

  1. 按Alt+F11打开VBA编辑器;
  2. 右键点击当前工作簿,选择「插入」→「模块」;
  3. 将以下代码粘贴到模块窗口:
Function RemovePrices(ByVal cellText As String) As String
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")
    regex.Global = True
    ' 匹配所有带$或小数点的金额格式,包括带千分位逗号的情况
    regex.Pattern = "\s?(\$?[\d,]+\.\d+|\$?\d+)\b"
    ' 替换匹配到的价格为空
    RemovePrices = regex.Replace(cellText, "")
    ' 清理替换后可能出现的多余空格
    RemovePrices = Replace(RemovePrices, "  ", " ")
    ' 保留原换行,同时去除首尾多余空格
    RemovePrices = Trim(RemovePrices)
End Function
  1. 返回Excel,在目标单元格输入公式=RemovePrices(A1)(A1为原内容所在单元格),按回车即可得到处理后的结果,下拉可批量应用。

方案二:内置函数组合(无宏,需Excel 365支持)

如果无法启用宏,可借助TEXTSPLIT、TEXTJOIN等365专属函数拆分每行处理后再合并,保留换行:

在目标单元格输入以下公式:

=TEXTJOIN(CHAR(10), TRUE, TRIM(SUBSTITUTE(TEXTSPLIT(A1, CHAR(10)), 
    MID(TEXTSPLIT(A1, CHAR(10)), 
        IFERROR(FIND("$", TEXTSPLIT(A1, CHAR(10))), 
            IFERROR(FIND(".", TEXTSPLIT(A1, CHAR(10))), LEN(TEXTSPLIT(A1, CHAR(10)))+1)
        ), 
        LEN(TEXTSPLIT(A1, CHAR(10)))
    ), "")
))

逻辑说明:

  1. 用TEXTSPLIT(A1, CHAR(10))按换行拆分单元格内容为每行独立文本;
  2. 用FIND定位每行中$或.的位置,找不到则取行尾;
  3. 用SUBSTITUTE去掉从定位位置到行尾的内容,TRIM清理多余空格;
  4. 最后用TEXTJOIN(CHAR(10), TRUE, ...)将处理后的行按换行合并。

示例效果:

原单元格内容:

90,000 Mile
Intake Service $159.95
Air Filter 69.95
Rear Brake Pads (4MM)

处理后结果:

90,000 Mile
Intake Service
Air Filter
Rear Brake Pads (4MM)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:47:31