Excel用“查找”中的相应字符串替换单元格(表单A)中的子字符串(表B)

时间:2017-03-30 14:23:56

标签: excel excel-formula

如何在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 匹配的子字符串。

我有另一张表(查询表),用>

替换 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

看起来我可以将VLOOKUPSUBSTITUTE合并,但我正在努力解决这个问题

2 个答案:

答案 0 :(得分:2)

我有一个相当笨重的解决方案,但如果您不介意采取一些额外的步骤,它将对您有用。 (无需VBA)。

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

enter image description here

所以现在你把它全部分开了。

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

enter image description here

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

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

enter image description here

答案 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),"")

enter image description here

如果您订阅了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会将{}放在公式周围。

警告说,参考数据必须在查阅列上排序:

enter image description here

enter image description here

1 如果你没有Office 365但想要使用这个公式,你可以放置我的答案HERE中的代码,它将模仿模块中的TEXTJOIN()附在工作表上。然后使用上述公式