我想处理 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 匹配的子字符串。
我有另一张表(查询表),用>>
替换 A列中的文字Match col | Replace col
----------------------------
one, 1 | one apple
two, 2 | two bananas
three, 3 | three strawberries
four, 4 | four oranges
... and many more ...
我想将 A列中的所有子字符串替换为查找表的替换col 值
看起来我可以将VLOOKUP
与SUBSTITUTE
合并,但我正在努力解决这个问题
答案 0 :(得分:2)
我有一个相当笨重的解决方案,但如果您不介意采取一些额外的步骤,它将对您有用。 (无需VBA)。
使用原始数据突出显示所有数据并使用逗号分隔符执行Text to Columns
。将目的地设置为您喜欢的任何地方。我选择了正确的列(所以,B2
):
所以现在你把它全部分开了。
我将VLOOKUP()
表放在“Sheet2”中:
回到Sheet1,在I2
中,我使用了这个公式:
=IFERROR(VLOOKUP(TRIM(B2)&", "&TRIM(C2),Sheet2!$A$1:$B$4,2,FALSE),"")
然后向右拖动。您将有一些空列可以隐藏/删除,然后复制所有数据。
答案 1 :(得分:2)
在单个细胞中进行;
=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会将{}
放在公式周围。
警告说,参考数据必须在查阅列上排序:
1 如果你没有Office 365但想要使用这个公式,你可以放置我的答案HERE中的代码,它将模仿模块中的TEXTJOIN()附在工作表上。然后使用上述公式