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

求助:无需VBA的Excel单元格文本处理公式(含特殊字符)

解决方案

方法1:基础替换(针对单一中间项)

如果仅需要处理Đ198,-,这一个中间冗余项,直接用嵌套SUBSTITUTE即可完成:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"!",""),"*",""),"Đ198,-,","")
  • 第一层SUBSTITUTE:全局删除所有!字符
  • 第二层SUBSTITUTE:全局删除所有*字符
  • 第三层SUBSTITUTE:删除指定的中间冗余片段

方法2:通用处理(支持多中间项+保留所有内容)

如果存在多个类似的中间冗余项,或者需要更通用的逻辑,结合FILTERXML、TEXTJOIN和REDUCE实现批量处理:

=REDUCE(
    TEXTJOIN(",",1,SUBSTITUTE(SUBSTITUTE(FILTERXML("<t><s>" & SUBSTITUTE(A1,",","</s><s>") & "</s></t>","//s"),"!",""),"*","")),
    {"Đ198,-,","ĐXXX,-,"},  // 替换为你需要删除的所有中间冗余片段
    LAMBDA(result, item, SUBSTITUTE(result, item, ""))
)

逻辑说明:

  1. 用SUBSTITUTE(A1,",","</s><s>")将原文本按逗号分割为XML标签结构
  2. FILTERXML提取所有分割后的元素
  3. 双层SUBSTITUTE清除所有!和*字符
  4. TEXTJOIN将处理后的元素重新用逗号连接
  5. REDUCE批量替换所有需要删除的中间冗余项(可在数组中添加更多目标片段)

方法3:连续数字范围自动简化(可选)

如果冗余中间项都是连续数字的Đ项(比如Đ198夹在Đ197和Đ199之间),可通过数字规律自动过滤:

=TEXTJOIN(",",1,LET(
    arr, SUBSTITUTE(SUBSTITUTE(FILTERXML("<t><s>" & SUBSTITUTE(A1,",","</s><s>") & "</s></t>","//s"),"!",""),"*",""),
    filtered, FILTER(arr, NOT(AND(LEFT(arr,2)="Đ", ISNUMBER(MID(arr,3,10)+0), XMATCH(MID(arr,3,10)+1, MID(arr,3,10))>0, XMATCH(MID(arr,3,10)-1, MID(arr,3,10))>0))),
    filtered
))

该公式会自动识别并过滤掉处于两个连续数字Đ项之间的中间冗余项。


内容的提问来源于stack exchange,提问作者D.Moore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:04:50