例如:有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”,把它加到里面就可以了嘛: