Excel在单元格(表单A)中用“lookup”(表单B)中的相应stringreplace子string,

如何在MS Excel 15.4中做到这一点

我想处理A 成为B列

Column A | Column B ---------------------------------------------------------------------- one, 1, two, 2, three, 3 | one apple, two bananas, three strawberries one, 1, four, 4 | one apple, four oranges ....................... ... many other rows ... ....................... two, 2, four, 4, three, 3 | two bananas, four oranges, three strawberries 

列A在查找表中可以有n个匹配的子string。

我有另一个工作表(查找表),用什么来替代列A中的文本

 Match col | Replace col ---------------------------- one, 1 | one apple two, 2 | two bananas three, 3 | three strawberries four, 4 | four oranges ... and many more ... 

我想用查找表的replace列replace列A中find的所有子string

看起来我可能能够将VLOOKUPSUBSTITUTE结合起来,但我正在为此而苦苦挣扎

要在个人的细胞中做到这一点;

 =IFERROR(VLOOKUP(TRIM(SUBSTITUTE(MID(SUBSTITUTE($A1,",",REPT(" ",999)),(COLUMN(A:A)-1)*2*999+1,2*999),REPT(" ",999),",")),Sheet2!$A:$B,2,FALSE),"") 

在这里输入图像描述


如果您订阅了Office 365 1 excel,则可以使用此数组公式将其全部放入一个单元格中:

 =TEXTJOIN(",",TRUE,IFERROR(LOOKUP(TRIM(SUBSTITUTE(MID(SUBSTITUTE($A1,",",REPT(" ",999)),(ROW(INDIRECT("1:" & INT((LEN($A1)-LEN(SUBSTITUTE($A1,",","")))/2)+1))-1)*2*999+1,2*999),REPT(" ",999),",")),Sheet2!A:A,Sheet2!B:B),"")) 

作为一个数组公式,在退出编辑模式时,必须使用Ctrl-Shift-Enter而不是Enter来确认。 如果正确完成,则Excel将在公式周围放置{}

需要注意的是参考数据必须在查找列中sorting:

在这里输入图像说明

在这里输入图像说明


1如果您没有Office 365,但想要使用此公式,则可以将我的答案放在这里的代码中,以模拟连接到工作表的模块中的TEXTJOIN()。 然后使用上面描述的公式

我有一个相当笨拙的解决scheme,但它会为你工作,如果你不介意采取一些额外的步骤。 (不需要VBA)。

使用原始数据,突出显示所有数据,并使用逗号分隔符对Text to Columns 。 将目的地设置到任何你喜欢的地方。 我select了正确的列(所以, B2 ):

在这里输入图像描述

所以,现在你已经分手了。

我把VLOOKUP()表放在“Sheet2”中:

在这里输入图像说明

回到Sheet1,在I2 ,我使用了这个公式:
=IFERROR(VLOOKUP(TRIM(B2)&", "&TRIM(C2),Sheet2!$A$1:$B$4,2,FALSE),"")

然后向右拖。 你会有一些空的列,你可以隐藏/删除,然后复制所有的数据。

在这里输入图像描述