根据多列和多行条件查找范围

根据多列和多行条件查找范围

我有下面的查找表,其中的列C来自E不同的地方:

查找表 下面,我尝试根据列和行标准查找值:

查找条件

如何在单元格中找到值“Orange”、“2019”和“Plants” D2

我尝试了各种索引匹配vlookuphlookup技术,但似乎无法解决这个问题。

答案1

如果要返回的值是数字,并且颜色、年份和地点的组合是唯一的,那么您可以使用 SumProduct

=SUMPRODUCT($C$2:$E$10*($A$2:$A$10=I2)*($B$2:$B$10=J2)*($C$1:$E$1=K2))

在此处输入图片描述

对于文本数据,这也可以通过 Index/Match 来完成,但这会更加复杂。

答案2

假设包含所有数据的工作表名为“Sheet1”,您可以在“Count”字段中使用此公式来获取适当的值。

=INDIRECT("Sheet1!" &SUBSTITUTE(ADDRESS(1,MATCH(C2,Sheet1!$C$1:$E$1,0)+2,4),"1","") &MATCH(1,(Sheet1!$A:$A=A2)*(Sheet1!$B:$B=B2),0))

添加公式后,您必须按 <control>+<shift>+<enter> 来计算值。(听起来很奇怪……我知道。相信我。)

好的......所以这里是细分:首先,我们需要找到我们想要从中返回数据的列(树木/植物/等......)对于树木,格式为“Sheet1!C”,对于植物,格式为“Sheet1!D”等......这段代码就是这样做的:

"Sheet1!" &SUBSTITUTE(ADDRESS(1,MATCH(C2,Sheet1!$C$1:$E$1,0)+2,4),"1","")

本质上,我们使用它MATCH来查找匹配标题的位置。在本例中,我们的 Match 语句查看单元格“C2”,并查看 C1-E1 的标题。(我们使用来$确保如果我们进行向下填充,这些单元格不会发生变化)对于这种情况,它将返回 2... 表示我们匹配的第 2 列。我们需要再添加 2,因为我们跳过了“颜色”和“年份”。所以,我们真正要看的是第 4 列。我们可以使用“地址”函数返回列名。(它实际上返回“D1”,但我们使用替换命令删除“1”)... 所以我们得到“D”。

现在我们有了“Sheet1!D”,我们需要该行。该行的第二部分如下:

MATCH(1,(Sheet1!$A:$A=A2)*(Sheet1!$B:$B=B2),0)

再次,我们使用老办法MATCH。这一次,我们将行数据转换为真值表。引用“Sheet1!A:A”,返回 A 列中所有数据的数组,但添加比较器后,如果比较结果为真,则返回 1,如果比较结果为假,则返回 0。因此,在这种情况下,我们最终得到一个数组,其中所有“橙色”行均为 1,所有非橙色行均为 0。

但请稍等!还有更多!注意到我们如何乘以第二个数组,对“B”列执行相同的操作吗?Excel 足够聪明,可以为我们进行矩阵数学运算。在这种情况下,对于值为“2019”的值,“B”列返回的数组仅为 1。这很有用,因为当我们将它们全部为橙色的数组与它们全部为 2019 的数组相乘时,我们最终会得到一个数组,其中它们必须同时为橙色和 2019。我们只需MATCH查找存在“1”的行,最终就会得到匹配的行。在这种情况下为“2”。

那么,我们怎样才能得到该行呢?我们只需将其附加到前一个字符串,最后得到“Sheet1!D2”,然后将其传递给该字段以INDIRECT获取该字段的值。一个可爱的“2”。这正是我们一直想要的。

由于我确实在那些不应改变的字段上包含了“$”标记,因此您应该能够使用“向下填充”方法动态调整与位置相关的单元格,同时保持静态搜索条件不变。

现在...为什么我们必须按 <control>+<shift>+<enter> 才能让它生成正确的答案?好吧,Excel 有一个奇怪的东西,如果你在做矩阵数学,你必须使用它CSE来让它做正确的数学运算。如果你稍后编辑该函数,请记住这一点。CSE CSE加拿大教育标准局...它可以让你省去一些麻烦。

相关内容