如何在 Excel 中一次替换多个字符串?

Pla*_*Hsu 3 excel excel-formula

我期待的功能

some_function(original_text, "search_text", "replacement_text")
Run Code Online (Sandbox Code Playgroud)

第二个和第三个参数的值将是多个字符。例如。结果将根据第二个和第三个参数处的字符位置替换字符

some_function("9528", "1234567890", "abcdefghij")

1 -> a
2 -> b
3 -> c
...
8 -> h
9 -> i
0 -> j 
Run Code Online (Sandbox Code Playgroud)

的结果some_function将是iebh. 嵌套SUBSTITUTE函数可以实现目标,但我希望压缩复杂性。

Jvd*_*vdV 7

REDUCE()您描述需求的方式最好通过lambda 相关的辅助函数编写,并且最近宣布投入生产

=REDUCE("9528",SEQUENCE(10),LAMBDA(x,y,SUBSTITUTE(x,MID("1234567890",y,1),MID("abcdefghij",y,1))))
Run Code Online (Sandbox Code Playgroud)

不用说,当与单元格引用一起使用时,这会变得更加生动:

在此输入图像描述

公式为A3

=REDUCE(A1,SEQUENCE(LEN(B1)),LAMBDA(x,y,SUBSTITUTE(x,MID(B1,y,1),MID(C1,y,1))))
Run Code Online (Sandbox Code Playgroud)

另一种更复杂的方式可能是:

=LET(A,9528,B,1234567890,C,"abcdefghij",D,MID(A,SEQUENCE(LEN(A)),1),CONCAT(IFERROR(MID(C,FIND(D,B),1),D)))
Run Code Online (Sandbox Code Playgroud)

或者,根据上面的截图:

=LET(A,A1,B,B1,C,C1,D,MID(A,SEQUENCE(LEN(A)),1),CONCAT(IFERROR(MID(C,FIND(D,B),1),D)))
Run Code Online (Sandbox Code Playgroud)