请参考上面的原始问题。有人告诉我要问一个新问题。
罗恩·罗森菲尔德(Ron Rosenfeld)的解决方案在数字上效果很好,但是如果我的两个列表都是字母数字(例如, P1234,C4321,P0123,P0678?
公式:
=TEXTJOIN(",",TRUE,IFERROR(1/(1/(ISNUMBER(FIND(","&TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",99)),seq_99,99))&",",","&A2&","))))*TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",99)),seq_99,99)),""))
在第二个TRIM之前,如果我只添加“ 0”,则结果有效,但每个结果前都有一个0。例如:
))))*"0"&TRIM(MID(SUBSTITUTE
结果类似于0C4321,0P0123,0P0678。
答案 0 :(得分:3)
可以这样修改:
=TEXTJOIN(",",TRUE,IF(ISNUMBER(FIND(","&TRIM(MID(SUBSTITUTE(B1,",",REPT(" ",99)),seq_99,99))&",",","&A1&",")),TRIM(MID(SUBSTITUTE(B1,",",REPT(" ",99)),seq_99,99)),""))
但是有一个较短的版本,不需要命名范围。
=TEXTJOIN(",",TRUE,FILTERXML("<a><b>"&SUBSTITUTE(B2,",","</b><b>")&"</b></a>","//b[contains(',"&A2&",',concat(',', ., ','))]"))
根据版本的不同,退出编辑模式时可能需要使用Ctrl-Shift-Enter而不是Enter进行确认。
答案 1 :(得分:2)