【问题标题】:VLOOKUP with multiple criterias in different columns [duplicate]在不同列中具有多个条件的 VLOOKUP [重复]
【发布时间】:2019-10-19 09:19:50
【问题描述】:

我有以下 Excel 电子表格:

        A         B           C                 D               E
1  Products     Brands      Revenue     Search Criterias
2  Product A    Brand1      500           Criteria 1:        Product C
3  Product B    Brand3      800           Criteria 2:        Brand 3
4  Product B    Brand2      900           Revenue:           300
5  Product C    Brand1      200
6  Product C    Brand3      300
7  Product C    Brand4      750
8  Product D    Brand1      450
9  Product C    Brand4      150
10

正如您在 A 列 中看到的,我有产品列表,B 列 有相应的品牌,C 列 有收入。


现在我想使用 VLOOKUP 来搜索基于产品 (Cell E2) 和品牌 (Cell E3) 的收入。因此,我尝试使用这个公式:

E4 =VLOOKUP(E2&"-"&E3,A1:C9,3,FALSE)

但是,这个公式给了我#NV

我需要对我的公式进行哪些更改才能使其发挥作用?


请注意:
我知道我可以通过添加一个 helper column 来解决这个问题,在其中我将 A 列B 列 的数据组合起来,然后让 VLOOKUP 运行在这个 @ 987654331@。但是,我正在寻找没有此helper column 的解决方案。


【问题讨论】:

  • 我找到了你的公式: =VLOOKUP(E2&"-"&E3,CHOOSE({1,2},A2:A25&"-"&B2:B25,C2:C25),2,FALSE) 来自这里的网站smartsheet.com/advanced-vlookup-multiple-criteria 但我仍然得到#NV 结果。
  • 你试过了吗 =VLOOKUP(E2&E3,CHOOSE({1\2}$A$1:$A$9&$B$1:$B$9,$C$1:$C$9),2,错误的)?它是一个矩阵函数,所以不是通过 enter 引入,而是使用 CTRL+SHIFT+ENTER
  • 总之,下一次,关于SO的小研究会help你...
  • 不要在查找@DavidGarcíaBodego 中使用多列的串联。这很容易出错

标签: excel excel-formula


【解决方案1】:

首先,请注意,您的查找数组没有空格,而您的查找值有!那将永远不会返回匹配项,因此请先解决该问题。

此外,我强烈建议不要在多条件查找中连接值,永远!这很容易出错。而是使用布尔逻辑创建一个由 1 和 0 组成的数组,以使用 INDEXMATCH 的强大组合。如果您是 Excel 的常规用户并且它是工作表函数,请尝试养成使用该组合而不是 VLOOKUP 的习惯。

Here 是对这种功能组合的一个小介绍。正如那篇文章中提到的那样,INDEX 会更频繁地派上用场,正如您在下面的示例中创建返回数组时会注意到的那样。这将防止使用必须通过 CtrlShiftEnter =)

输入数组公式

E4中的公式:

=INDEX(C2:C9,MATCH(1,INDEX((A2:A9=E2)*(B2:B9=E3),),0))

当您实际上在Revenue 下获得数值时,您可以简单地使用SUMIFS,正如其他答案所建议的那样。

【讨论】:

    【解决方案2】:

    我强烈建议使用SUMIFS 而不是VLOOKUP,因为这样可以确保如果您有多个相同的值,它会将它们相加:

    =SUMIFS(C:C,A:A,E2,B:B,E3)
    

    但此功能仅适用于较新版本的 Excel,如果您需要旧版本的 Excel,您需要使用 SUMPRODUCT


    您也可以选择使用替代VLOOKUP,它是INDEXMATCH 的组合。有两种选择,带“{}”的数组公式在某些情况下会导致错误的数据,但很容易理解:

    {=INDEX(C:C,MATCH(E2&E3,A:A&B:B,0))}
    

    这是一个矩阵公式,因此当您按 CTRL + SHIFT + ENTER 定期键入公式时,Excel 会添加“{}” kbd>

    否则使用。我总是建议使用常规公式而不是矩阵公式

    引用用户JvdV

    E4 中的公式:

    =INDEX(C2:C9,MATCH(1,INDEX((A2:A9=E2)*(B2:B9=E3),),0))

    【讨论】:

    • 赞成使用SUMIFS,但恕我直言,第二个选项不好。使用本身的值连接非常容易出错,并且使用整个列范围非常慢。您可能需要考虑从头开始。
    【解决方案3】:

    2 个条件查找的最短和最快公式是使用 DGET()

    表格布局如下:

        A         B           C                 D               E               F
    1  Products     Brands      Revenue     Search Criterias
    2  Product A    Brand1      500           Products         Brands         Revenue
    3  Product B    Brand3      800           Product C        Brand3
    4  Product B    Brand2      900
    5  Product C    Brand1      200
    6  Product C    Brand3      300
    7  Product C    Brand4      750
    8  Product D    Brand1      450
    9  Product C    Brand4      150
    

    F3 公式:

    =DGET(A1:C9,F2,D2:E3)
    

    并且,将返回所需的结果:300

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      相关资源
      最近更新 更多