如何在Excel中的多个列中索引和进行多个匹配?

时间:2018-03-30 18:48:20

标签: excel excel-formula

我有一个如下所示的电子表格:

 Animal      Where    Quantity
 Giraffe     Wild     22
 Lion        Zoo      87
 Tiger       Zoo      56
 Giraffe     Zoo      15
 Elephant    Wild     94
 Tiger       Wild     47
 Lion        Wild     45
 Elephant    Zoo      12
 Tiger       Zoo      48

我需要返回所有数量的Tiger,但只返回动物园中的数量,我需要在列中的不同单元格中列出这些数量。我应该能够轻松地将查询从Tiger更改为任何其他动物。

输出应如下所示:

Get the quantities of Tigers that live in a Zoo:
 Tiger
  56        
  48

Get the quantities of Lions that live in the Wild:
 Lions
  94

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

误解了问题

因此,您将在某处代表您的标准。让我们称它为动物类型的细胞D1和位置的细胞D2。

然后,您将使用以下公式的组合:INDEX和AGGREGATE。

让我们从AGGREGATE开始。使用它来构建符合您要查找的条件的行号列表。

AGGREGATE(15,6,ROW(range of the first column of your table)/((range1=criteria1)*(range2=criteria2)*...*(rangeN=criteriaN)),row(A1))
  • 15告诉AGGREGATE生成按升序排序的列表。
  • 6告诉AGGREGATE从列表中排除任何错误。
  • ROW()为我们提供了我们正在使用的行号除以条件,只允许所有条件都为真的结果为有效列表条目。任何错误的结果都会导致除以零错误 从结果列表中排除ROW()。
  • ROW(A1)告诉AGGREGATE返回列表中的第N个数字。所以当公式被拖下来时,ROW(A1)将充当计数器。对于复制到的每一行,它将增加1。

需要注意的几件重要事项。 AGGREGATE执行数组计算。因此,避免聚合函数内的完整列引用。阵列计算中的大范围可能会降低计算机的速度。 Marke确保你用$锁定参考范围,以防止它们在你复制时改变,除非它是你要改变的东西,如行(A1)

现在您知道如何获得所需答案的行号列表。您现在想要将此信息嵌入到INDEX公式中:

INDEX(A:A,AGGREGATE(...))

对要拉取更新A的每一行信息重复此步骤:要从中提取信息的部分。

概念证明

POC

在图像中我将整个公式包装在IFERROR函数中以显示""什么也没找到。当你复制更多行而不是结果时,很方便。