如何使用INDEX+MATCH实现多条件查找?
Q:如图1所示,列A和列B中的数据都有重复,现在我们要使用INDEX+MATCH函数组合来查找西区空调的数量。可以使用MATCH函数获得查找值所在的行,将其作为INDEX函数的参数来获取数据。然而,由于MATCH函数将只会返回第一个匹配的数据所在的位置,也就是说公式:=MATCH(“空调”,A:A,0),返回数值5,而我们想要的是数值7,显然与我们的要求不符,结果当然也不正确。那么,如何实现呢?
图1
A:下面使用INDEX+MATCH函数组合编写的数组公式来实现目的。
如图2所示,在单元格区域E2:F3中列出查找条件。在单元格F2中是要查找的物品,单元格F3中是物品所在的仓库。
图2
从查找数据的表中,我们发现物品和仓库组成的数据没有重复值,因此可以将它们组合成查找表,这样查找值也是唯一的。数组公式:
=MATCH(F2&F3,A2:A11&B2:B11,0)
获得西区空调在查找表中的位置,返回值6。然后,将结果作为INDEX函数的参数,获取数量值。数组公式为:
=INDEX(A2:C11,MATCH(F2&F3,A2:A11&B2:B11,0),3)
结果如图3所示。
图3
还可以在公式中使用逻辑判断来实现。下面的数组公式:
=MATCH(1,(A2:A11=F2)*(B2:B11=F3),0)
查找单元格区域A2:B11中满足列A中的值为单元格F2中的数据并且列B中的值为单元格F3中的数据所在行的位置,本例中为列A中为“空调”且列B中为“西区”的行在单元格区域A2:B11中的位置,返回6,即位于单元格区域的第6行。
然后,将结果作为INDEX函数的参数,数组公式:
=INDEX(A2:C11,MATCH(1,(A2:A11=F2)*(B2:B11=F3),0),3)
获取西区空调的数量为600。