vlookup函数本身只支持单条件查找,但在数据统计时,总会遇到需要多条件查找的时候,那我们如何用vlookup函数,来实现多条件查找呢?
如上图左边表格,数据排列方式不便于阅读,现需转化为右侧的排列形式,就需要用到多条件查找;我们可以在H3处,输入数组公式:{=VLOOKUP($G3&H$2,IF({1,0},$B$3:$B$17&$C$3:$C$17,$D$3:$D$17),2,0)}。然后向下向右复制填充即可。该公式的核心是if({1,0})函数,下面一步步结合实例来理解该函数:
上图是两列数据,在任意空单元格输入公式:=if(1,A2,B2),返回结果为a;输入公式:=if(0,A2,B2),返回结果为1。因为在逻辑计算时:
1=ture
0=false
于是:公式if(1,A2,B2)等价于if(ture,A2,B2),返回结果单元格A2;公式if(0,A2,B2)等价于if(false,A2,B2),返回结果单元格B2。
那当我们输入公式if({1,0},A2,B2)时,计算机会返回什么结果呢?因条件{1,0}是一个二元数组,故返回结果也会是一个二元数组{A2,B2}。计算步骤是这样的:首先按顺序进行一次if(1,A2,B2)的计算,返回真值A2;然后按顺序进行一次if(0,A2,B2)的计算,返回假值B2;最后合并成数组{A2,B2}输出。
以此类推,有:
输入公式if({1,1},A2,B2),返回结果{A2,A2}
输入公式if({0,0},A2,B2),返回结果{B2,B2}
输入公式if({0,1,1},A2,B2),返回结果{B2,A2,A2}
......
也就是说:(1)if({1,0})函数可以构建新区域;(2)在vlookup函数中嵌入if({1,0})函数,可实现多条件查找。现在返回分析最开始的那个函数公式:{=VLOOKUP($G3&H$2,IF({1,0},$B$3:$B$17&$C$3:$C$17,$D$3:$D$17),2,0)}。
第一步:将两个条件单元格用连接符连接起来,合并为一个条件,即G3&H2,然后根据实际情况,调整锁定格式为$G3&H$2;
第二步:既然条件合并为一个了,那么查找的两列也需要合并为一列,即B:B&C:C;但数组公式本身运算量就很大,不适合采用相对引用,故采取绝对引用$B$3:$B$17&$C$3:$C$17;
第三步:利用if({1,0})函数,将第二步的合并查找列与结果列$D$3:$D$17,构建成一个新区域,作为vlookup函数的第2个参数;这里也能看出来,vlookup函数的第3个参数—列序数为2;
最后:以组合键Ctrl+Shift+Enter结束输入,形成数据组公式,再向下向右填充即可。