条件Vlookup 3个搜索词一张表

问题描述

有没有办法在一张桌子上使用 3 个不同的搜索词进行 Vlookup? 例如,我想通过 SamAcctName 或 UserlogonName 或 TestName 在一个大数据池中查找

Search terms  

SamAcctName    |      UserlogonName     |   TestName  |      result      |
---------------|------------------------|-------------|------------------|
test.user      | testuser@test.com      | testus      | Result 1 <<<<<<  |
---------------|------------------------|-------------|------------------|
estuser        |   other@test.com       | testuseer   | Result 2 <<<<<<  |
---------------|------------------------|-------------|------------------|




Table with all data records 


Name          |        Description      |     moredata       |
--------------|-------------------------|--------------------|
Test.User     |  Result 1 <<<<<<<       |    Blah  Blah BLah |
--------------|-------------------------|--------------------|
other@test.com|  user ..Blah Blah       |    Blah  Blah BLah |
--------------|-------------------------|--------------------|
other.user    |  user ..Blah Blah       |    Blah  Blah BLah |
--------------|-------------------------|--------------------|
TestUser2     |  user ..Blah Blah       |    Blah  Blah BLah |
--------------|-------------------------|--------------------|
other.user    |  user ..Blah Blah       |    Blah  Blah BLah |
--------------|-------------------------|--------------------|
other@test.com|  Result 2 <<<<<<<       |    Blah  Blah BLah |
--------------|-------------------------|--------------------|
other.user    |  user ..Blah Blah       |    Blah  Blah BLah |
--------------|-------------------------|--------------------|

解决方法

一个简单的大锤方法是编写嵌套的 IFERROR(VLOOKUP... 如下公式。

=IFERROR(VLOOKUP(A2,F:G,2,0),IFERROR(VLOOKUP(B2,IFERROR(VLOOKUP(C2,"")))

其中 F&G 列包含所有数据表,第一个表在 A2:D3 范围内。

,

=INDEX(D1:D3,MATCH(1,MMULT(--(A1:C3=E1),TRANSPOSE(COLUMN(A1:C3)^0)),0))

这是一个用ctrl + shift + enter输入的数组函数

一个数组是从 A1:C3=E1 创建为 1 或 2(TRUE 或 FALSE)。该数组是 3 列和您的范围的长度。 使用 TRANSPOSE(COLUMN(A1:C3)^0) 创建第二个数组,结果为 {1,3},0 次方为 {1,1,1}。 MMULT 将这些数组相乘,结果是匹配值的行号。 INDEX 在该行的索引列中显示结果值。

编辑:我刚刚意识到我使用 E1 作为查找值,但在您的情况下将其更改为适用于您的单元格。此外,数据范围是假设,可能需要修改。

为了反映您的数据,如下所示: 搜索词从 H2 到 I500,数据池从 A2 到 F1465,我假设要显示的结果数据来自 B 列: =INDEX(B2:B1465,MMULT(--(H2:I500=A1),TRANSPOSE(COLUMN(H2:I500)^0)),0))