求助EXCEL用公式批量替换

需要用公式完成,A 列是原数据,B列是通过公式得到的结果, C 列 和D 列是替换条件。 如图 A替换成1,B替换成2.。。。。。, 所有A1里的A,B,C替换后变成B1里的1,2,3. 如果A 里的数据在C列里找不到,就不替换,保留原始数据,比如A7,A8,A9,希望大神能帮忙,多谢

想了下,根据单元格字母个数用VLOOKUP提取的办法更实用,在B1单元格输入公式=IFERROR(IF(LEN(SUBSTITUTE(A1,",",))=1,VLOOKUP(LEFT(A1,1),C:D,2,),IF(LEN(SUBSTITUTE(A1,",",))=2,VLOOKUP(LEFT(A1,1),C:D,2,)&","&VLOOKUP(MID(A1,3,1),C:D,2,),IF(LEN(SUBSTITUTE(A1,",",))=3,VLOOKUP(LEFT(A1,1),C:D,2,)&","&VLOOKUP(MID(A1,3,1),C:D,2,)&","&VLOOKUP(MID(A1,5,1),C:D,2,),IF(LEN(SUBSTITUTE(A1,",",))=4,VLOOKUP(LEFT(A1,1),C:D,2,)&","&VLOOKUP(MID(A1,3,1),C:D,2,)&","&VLOOKUP(MID(A1,5,1),C:D,2,)&","&VLOOKUP(MID(A1,7,1),C:D,2,),IF(LEN(SUBSTITUTE(A1,",",))=5,VLOOKUP(LEFT(A1,1),C:D,2,)&","&VLOOKUP(MID(A1,3,1),C:D,2,)&","&VLOOKUP(MID(A1,5,1),C:D,2,)&","&VLOOKUP(MID(A1,7,1),C:D,2,)&","&VLOOKUP(MID(A1,9,1),C:D,2,),""))))),A1)

下拉公式。(以上公式为你写到如A1单元格中5个字母的长度,不够的话可自行模仿添加公式即可) 如图:

示例

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-01

数组公式:(按Ctrl+Shift+Enter)

=TEXTJOIN(" ",,MID("= "&FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE(A4,"/&"," OR </b><b>"),"&"," AND </b><b>")&"</b></a>","//b"),{3,1},{3,99}))

=TEXTJOIN(" ",,MID("= '"&FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE(A1,"/&","' OR</b><b>"),"&","' AND</b><b>")&"</b></a>","//b"),{4,1},{3,99}))&"'"

下面的带单引号的

第2个回答  2020-01-31
用公式做起来太费劲了。如果替换对应列表不多,可以使用substitute函数多嵌套几层。
如果列表很多的话,2019版以上的表格,可以考虑用数组公式,将所有数字全部拆成单个字符,再用数组公式对应,如果能找到对应行,则返回对应行,找不到,则返回原数据。然后再把得到的数组重新组合。如果数据量大,这种数组公式运算是非常缓慢,。
还有就是可以使用VBA,做循环处理。也可以用VBA做一个自定义函数,做迭代处理。