如果查找值在单个单元格中包含多个值,则如何使用vlookup

时间:2017-03-19 22:36:23

标签: excel-vba excel-formula vba excel

假设Sheet1具有下表(数据范围单元格A1到B4)

Fruits  | Colors
======= | =======
 Apple  | Red
 Mango  | Green
 Banana | Yellow

假设在sheet2中,Cell A1具有基于空格分隔的以下值(Apple Mango Banana)。

如何在Cell B2中使用基于A1值的VLookup,它可以按相同的顺序给出结果(红绿黄)

1 个答案:

答案 0 :(得分:0)

Sheet2!B2中的这个公式可以做到:

=INDEX(sheet1!B:B,MATCH(TRIM(LEFT(SUBSTITUTE(A1, " ", REPT(" ", 100)),25)),sheet1!A:A,0)) & " " &
INDEX(sheet1!B:B,MATCH(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",100)),100,25)),sheet1!A:A,0)) & " " &
INDEX(sheet1!B:B,MATCH(TRIM(RIGHT(SUBSTITUTE(A1, " ", REPT(" ", 100)),25)),sheet1!A:A,0))

当你有3个值匹配时,此公式可以正常工作(如果只有2个值,则第二个将重复)。处理任意数量的值可能会更加复杂。

当然,在使用Split函数的VBA中可以更简单,并且它会考虑任意数量的键,从而产生连接值。您可以在宏中使用它:

Sheet2.Range("B1").value = Join(Application.index(Sheet1.Columns("B"), _
    Application.match(Split(Sheet2.Range("A1")), Sheet1.Columns("A"), 0)), " ")

当然,您可以使用BRange("B" & i) ...

将其调整为Range("A" & i)列中的任何单元格