【问题标题】:VLOOKUP return an array of all matches in ExcelVLOOKUP 返回 Excel 中所有匹配项的数组
【发布时间】:2014-05-18 00:34:17
【问题描述】:

我需要为 VLOOKUP 返回一个包含所有匹配项的数组,然后根据数组中的内容返回一个值。数据看起来像这样

product_style 颜色 in_stock 11111 绿色 0 11111 蓝色 1 22222 绿色 1 22222 蓝色 0 22222 红色 0 33333 绿色 1 我需要一个 vlookup 来根据样式查找所有产品,并找出它是否有库存颜色然后返回 0 或 1。很容易找到第一个值
=IF(VLOOKUP(A2,A2:C7,3,0)=1,1,0)

问题是它只会抓取第一次出现并返回该值。

一种可能的解决方案是将它们全部加起来,因为我使用 0 或 1 表示 in_stock,所以

=IF(VLOOKUP TOTAL > 0,1,0)

如果我能得到 VLOOKUP TOTAL 那就行了

唯一的限制是生成的数组必须全部在一个单元格中,我已经看到了这个答案,但是生成的数组显示在多个单元格中

http://office.microsoft.com/en-us/excel-help/how-to-look-up-a-value-in-a-list-and-return-multiple-corresponding-values-HA001226038.aspx

【问题讨论】:

  • 正如您在那篇文章中看到的那样,VLOOKUP 不返回有关多个匹配项的信息,只返回第一个匹配项(或无)。如果对in_stock 值求和对您有用,请尝试=SUMIFS(C2:C7,A2:A7,11111),它应该在示例数据中返回1
  • 这听起来对数据透视表很有用。
  • 我不确定您要做什么。您是否要查找特定款式的库存数量?
  • Alexandre - 不,它是是或否的布尔值,我想知道是否有任何颜色的库存。安迪 - 有效,如果你想提交答案,我会接受它

标签: arrays excel vlookup


【解决方案1】:

Sumifs 可以工作,如上面评论中所述,但它在 Excel 2003 及更早版本中不可用。这里有几种可能性

SUMIF 适用于所有版本的 Excel,但它只接受一个条件

=SUMIF(A2:A7,"11111",C2:C7)

SUMIFS 接受多个条件,但仅适用于 Excel 2007 及更高版本

=SUMIFS(C2:C7,A2:A7,"11111")

SUMPRODUCT 适用于多种条件,适用于所有版本的 Excel。它会比上述任何一个公式都慢,但这只会在大型数据集中表现出来。

=SUMPRODUCT((A2:A7="11111")*C2:C7)

下面的数组公式需要用Ctrl-Shift-Enter确认(不要输入大括号,Excel会添加它们会自动生成。)它适用于所有版本的 Excel,并且比 SUMPRODUCT 慢一点。

{=SUM(IF(A2:A7="11111",C2:C7,0))}

因此,如果您有 Excel 2003 或需要向后兼容性,请使用 SUMIF。这是适用于所有版本的最快选项。

【讨论】:

    【解决方案2】:

    我为 COLOR 和 PROD_ID 创建了命名范围以使其更具可读性:

    =IF(VLOOKUP(COLOR,IF(A1:A6=PROD_ID,B1:C6,""),2,0),1,0)

    输入这个公式的时候按CTRL+SHIFT+ENTER,它是一个数组公式,不这样输入就不行。我将从内到外解释它(尽我所能,因为我不完全理解其中的一部分。这是假设数据在单元格 A1:C6 中(没有标题)。

    作为数组函数输入允许内部IF循环遍历A1:A6=PROD_ID,对于每一次匹配,它都会在一个临时数组中添加一个元组,所以在内循环完成后,它返回数组{"Green", 0; “蓝色”,1; "",""; "",""; "",""; "",""; } - 这是一种更易读的格式(请原谅我可怕的“更易读”的格式):

    ---Col1---|--Col2

    -“绿色”-|--0

    --“蓝色”--|--1

    ---""-------|--""

    ---""-------|--""

    ---""-------|--""

    ---""-------|--""

    然后您的 vlookup 与此相反,将 1(第 2 行)返回到最外面的 if。不幸的是,我对公式中粗体部分的工作原理有点模糊,我只知道它会根据需要返回该范围内的适当行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-07
      • 2018-12-21
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多