一、案例

如下图所示,A1:C8为某小区住户信息表,要求根据楼栋和房号查询住户姓名。

一个数据对应多个数据如何查找(如何根据多个条件查找数据)(1)

二、解决方法

方法一、INDEX MATCH函数

在G2单元格输入公式

=INDEX($C$2:$C$8,MATCH(1,($A$2:$A$8=E2)*($B$2:$B$8=F2),0))

按Ctrl Shift Enter结束公式输入。

一个数据对应多个数据如何查找(如何根据多个条件查找数据)(2)

公式解析:

(1)($A$2:$A$8=E2)*($B$2:$B$8=F2)用于判断A2:A8的楼栋号是否为“6”,且B2:B8的房间号是否为“303”。当这两个条件均满足时,公式返回“1”,否则返回“0”。返回的结果为{0;0;1;0;0;0;0}

(2)MATCH(1,($A$2:$A$8=E2)*($B$2:$B$8=F2),0)指按精确查找的查找方式在{0;0;1;0;0;0;0}中查找“1”。MATCH函数查找到的“1”在{0;0;1;0;0;0;0}的第3个位置处。

(3)INDEX函数则返回C2:C8区域第3行的数据,即“小乔”。

方法二、LOOKUP函数

在G2单元格输入公式

=LOOKUP(2,1/(($A$2:$A$8=E2)*($B$2:$B$8=F2)),$C$2:$C$8)

一个数据对应多个数据如何查找(如何根据多个条件查找数据)(3)

公式解析:

(1)1/(($A$2:$A$8=E2)*($B$2:$B$8=F2)) 用于判断A2:A8、B2:B8是否同时等于E2、F2指定的楼栋和房间号两个条件,返回结果为

{#DIV/0!;#DIV/0!;1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}。返回结果为“1”,说明与E2、F2指定的楼栋和房号相符;否则返回错误值。

(2)LOOKUP函数在

{#DIV/0!;#DIV/0!;1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}中查找“2”。由于无法查找到“2”,LOOKUP会查找到“1”,并返回与查找到的“1”相同位置的C2:C8中的值,即“小乔”。

方法三、VLOOKUP IF函数

在G2单元格输入公式

=VLOOKUP(E2&F2,IF({1,0},$A$2:$A$8&$B$2:$B$8,$C$2:$C$8),2,FALSE)

按Ctrl Shift Enter结束公式输入。

一个数据对应多个数据如何查找(如何根据多个条件查找数据)(4)

公式解析:

(1)IF({1,0},$A$2:$A$8&$B$2:$B$8,$C$2:$C$8)用于构造如下图所示的内存数组:

一个数据对应多个数据如何查找(如何根据多个条件查找数据)(5)

$A$2:$A$8&$B$2:$B$8将两个查询条件所在的列合并为一列;C2:C8作为新生成的数据区域的第二列。

(2)VLOOKUP函数则在IF函数生成的内存数组中查询“6303”(即E2&F2的值),并返回第2列也就是“住户”所在列的值。

,