【问题标题】:Conditional Vlookup 3 search terms one tableConditional Vlookup 3 搜索词一张表
【发布时间】:2020-12-23 07:19:06
【问题描述】:

有没有一种方法可以在一张桌子上使用 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 |
--------------|-------------------------|--------------------|

【问题讨论】:

    标签: excel excel-formula excel-2016


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      =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, 2, 3},0 次方为{1, 1, 1}。 MMULT 将这些数组相乘,结果是匹配值的行号。 INDEX 显示该行的索引列中的结果值。

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

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

      【讨论】:

      • 谢谢!我无法让这个公式发挥作用,感觉它是一种优雅的方法。你能告诉我我需要了解哪些主题才能提出这样的解决方案吗?
      • 索引匹配组合通常比 vlookup 更好,因为能够使用多个条件。为此,请使用 INDEX(Result_Range,MATCH(1,(criteria_1)*(criteria_2)*(etc.),0)) 将满足所有条件的行号设为 TRUE (=1)。
      • 第一个表的数据范围是多少,第二个表的数据范围是多少?
      • 我的搜索词是从H2到I500,我的数据池是一个表。从 A2 到 F1465。这是我输入每个名称的表格时的问题之一 ir 导致 0
      • 我更新了给定范围的答案。让我知道它是否有效(不要忘记按照说明将公式作为数组输入)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多