EXCEL 查找一个字符串中含有某个字符(可能还有多个),然后用对应的字符替代原字符串中的字符。

例如:有ABBC3字符串,规则:A对应1 , B对应3和8 ,C及其他不作处理。
判断是否含有并分别替换的结果得到:1BBC、A3BC、A8BC、AB3C、AB8C共五个。
目的就是随意给一个字符串和字符对应规则,自动算出所有结果。
难点1:字符串中某同一个字符可能含有多个,例如本例中有两个B;
难点2:含有某个字符,可能需要替换两次,例如含有B时候,要分别用3和8区替换。
难点3:要自动得到所有替换后的字符串。

拜托大家看下用何种算法计算量比较小,谢谢~
不好意思,例子中是ABBC字符串,不是ABBC3。

每次只替换1个吗?我以为所有的排列组合呢。先把这个不知是不是你想要的结果贴出来:

A1公式为:

=IF(ROW()>18,"",LOOKUP(ROUNDUP(ROW()/9,),{1,2},{"A",1}))&IF(ROW()>18,"",LOOKUP(MOD(ROUNDUP(ROW()/3,)+2,3)+1,{1,2,3},{"B",3,8}))&IF(ROW()>18,"",LOOKUP(MOD(ROW(3:3),3)+1,{1,2,3},{"B",3,8}))&IF(ROW()>18,"","C")

追问

您列出的结果比我想要的要多。
每次只替换一个就行的,ABBC的话只有1BBC、A3BC、A8BC、AB3C、AB8C共五种结果。
其实这个的用途是,卡片上一串字符,由人来抄写到excel,8可能误认为B,A可能误认为是4.
现在默认其中一个字符抄错了,我要知道所有可能出错的结果然后系统验证其有效性。

追答

那这样列公式吧,还会有一定的通用性:

A1公式为:=IFERROR(REPLACE($C$2,D2,1,E2),"")

注意:红色数据是需要你手动整理的

追问

感谢!
可换数据那里,第一位只能换成1.问题是不知道哪一位需要替换。需要判断。

难点1:字符串中【某同一个字符】可能含有多个,例如本例中有两个B;
难点2:含有某个字符,【可能需要替换两次】,例如含有B时候,要分别用3和8区替换。
难点3:要自动得到所有替换后的字符串。

感谢!
可换数据那里,第一位只能换成1.问题是不知道哪一位需要替换。需要判断。

难点1:字符串中【某同一个字符】可能含有多个,例如本例中有两个B;
难点2:含有某个字符,【可能需要替换两次】,例如含有B时候,要分别用3和8区替换。
难点3:要自动得到所有替换后的字符串。

追答

我没明白你的意思。我这个公式已经很有通用性了。比如数据变了,看下图,仍然有效的:

如果想原来的字母也包含在里面,因为你刚刚说“第一位只能换成1”,把它加到里面就可以了嘛:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-07-16
replace或者substitute都可以。
假设手机号在A1,那么在B1录入:
=replace(A1,1,7,"66")
或者:
=SUBSTITUTE(A1,LEFT(A1,7),"66")本回答被网友采纳
相似回答