问题描述
有没有办法在一张桌子上使用 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))