【问题标题】:VLOOKUP search on several columnsVLOOKUP 搜索多列
【发布时间】:2019-10-10 20:01:17
【问题描述】:

我有一个包含 3 列的 Excel 电子表格。我想查找一个可以在前 2 中的值,然后从第三个中获取相应的值。

A B C
Mustang Empty Ford
Camaro Corvette Chevrolet

VLOOKUP 只能在第一列中搜索。我需要的是能够在 A 列和 B 列中找到一个值并从 C 中返回该值。

=VLOOKUP("Corvette",A1:C2,3,0) returns #N/A (would like to return Chevrolet)
=VLOOKUP("Camaro",A1:C2,3,0) returns Chevrolet

有可能吗?

【问题讨论】:

    标签: excel vlookup


    【解决方案1】:

    使用聚合:

    =INDEX(C:C,AGGREGATE(15,7,ROW($A$1:$C$2)/($A$1:$C$2=E1),1))
    


    如果只有三列那么这样会更快:

    =INDEX(C:C,IFERROR(IFERROR(MATCH(E1,A:A,0),MATCH(E1,B:B,0)),MATCH(E1,C:C,0)))
    

    但正如您所见,为每列添加 IFERROR 可能会因更多列而失控


    以上都将返回第一次遇到的查找。如果数据集是唯一的,任何列中都没有重复,我们可以使用以下内容。

    这使用了当前在 Office 365 for Insiders 上可用的 FILTER:

    =FILTER(C:C,(A:A=E1)+(B:B=E1)+(C:C=E1))
    

    但它确实要求数据集完全充满唯一性。如果想要返回所有匹配项,我们可以使用 TEXTJOIN 创建一个逗号分隔列表:

    =TEXTJOIN(",",TRUE,UNIQUE(FILTER(C:C,(A:A=E1)+(B:B=E1)+(C:C=E1))))
    

    【讨论】:

      【解决方案2】:

      你也可以试试这个:

      =IFERROR(VLOOKUP(F2,$A$2:$C$3,3,0),VLOOKUP(F2,$B$2:$C$3,2,0))
      

      其中F2 是查找项,$A$2:$C$3 是您的3 columns 的范围。

      逻辑是使用两个 VLOOKUP 如果查找值在 A 列,则从第 3 列返回值,如果查找值在 A 列,则从第 2 列返回值B 列。

      干杯:)

      【讨论】:

        【解决方案3】:

        我更喜欢索引匹配:

         =if(Isnumber(match(Thing, FirstColumn,0)),Index(ThirdColumn, Match(Thing, FirstColumn,0)),Index(ThirdColumn,Match(Thing, SecondColumn,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
          • 2021-05-01
          相关资源
          最近更新 更多