如何在Excel中组合多个嵌套替换函数?

sam*_*yme 13 excel nested excel-formula substitution nested-function

我正在尝试设置一个函数来重新格式化一个稍后将被连接的字符串.示例字符串如下所示:

Standard_H2_W1_Launch_123x456_S_40K_AB
Run Code Online (Sandbox Code Playgroud)

虽然有时" S "不存在,有时"40K"是"60K"或不存在,"_ AB"也可以是"_CD"或_"EF".最后,所有下划线都需要更改为连字符.最终产品应如下所示:

Standard-H2-W1-Launch-123x456-
Run Code Online (Sandbox Code Playgroud)

我有四个函数,如果一个接一个地运行将负责所有这些:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"_AB","_"),"_CD","_"),"_EF","_")

=SUBSTITUTE(SUBSTITUTE(B2,"_40K",""),"_60K","")

=SUBSTITUTE(C2,"_S_","_")

=SUBSTITUTE(D2,"_","-")
Run Code Online (Sandbox Code Playgroud)

我已经尝试了将这些组合成一个函数的多种方法,但我对这个级别的excel相对较新,所以我很茫然.无论如何要将所有这些结合起来,以便它在一个单元格中执行另一个命令吗?

Por*_*ner 18

要简单地将它们组合起来,你可以像下面这样将它们放在一

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"_AB","_"),"_CD","_"),"_EF","_"),"_40K",""),"_60K",""),"_S_","_"),"_","-")
Run Code Online (Sandbox Code Playgroud)

(请注意,这可能会超过7个嵌套语句的旧Excel限制.我正在Excel 2010中进行测试


另一种方法是利用Left和Right功能.

这假设末端的数据变化始终存在且长度为8个字符

=SUBSTITUTE(LEFT(A2,LEN(A2)-8),"_","-")
Run Code Online (Sandbox Code Playgroud)

这将实现相同的结果字符串


如果字符串并不总是以您要剥离的8个字符结尾,则可以搜索"_S"并获取当前位置.试试这个:

=SUBSTITUTE(LEFT(A2,FIND("_S",A2,1)),"_","-")
Run Code Online (Sandbox Code Playgroud)