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
看起来我可能能够将VLOOKUP
与SUBSTITUTE
结合起来,但我正在为此而苦苦挣扎
要在个人的细胞中做到这一点;
=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),"")
然后向右拖。 你会有一些空的列,你可以隐藏/删除,然后复制所有的数据。