Excel多条件查找?

Excel多条件查找?,第1张

Excel:6种多条件查找方法
如下图所示,要求根据设备分类和品牌来查找相应的销售数量。
1 使用VLOOKUP+辅助列进行多条件查找
本例采用的方法是在原表的最前面加一辅助列,辅助列的公式为:=B2&C2
然后再采用VLOOKUP进行如下查找:=VLOOKUP(F2&G2,A:D,4,0)
这里所采用的方法其实就是把多条件进行合并,将其转换为单条件查找。
2 VLOOKUP函数的数组多条件查找
本例使用了数组公式:=VLOOKUP(E2&F2,IF({1,0},A2:A7&B2:B7,C2:C7),2,0)
公式中的IF({1,0},A2:A7&B2:B7,C2:C7)是一个数组公式,它的返回值为:{"电脑ThinkPad",1760;"手机华为",2938;"iPad苹果",1731;"电脑苹果",1460;"手机三星",2039;"手机VIVO",1629},这其实也是把多条件通过内存数组合并为一个条件来进行查找。
3 使用SUM进行多条件查找
SUM是求和公式,但在本例中用它来进行查找。
这是一个数组公式:=SUM((A2:A7=E2)(B2:B7=F2)C2:C7),按CTRL + SHIFT +ENTER完成输入。
这里是使用了数组公式的相乘功能来变相实现查找功能。数组公式中的(A2:A7=E2)(B2:B7=F2)C2:C7返回值为:
{1;0;0;1;0;0}{1;0;0;0;0;0}{1760;2938;1731;1460;2039;1629},它们的返回值是1760。
4 使用SUMPRODUCT进行多条件查找
SUMPRODUCT返回数组乘积之和,所用公式如下所示:
=SUMPRODUCT((A2:A7=E2)(B2:B7=F2)C2:C7),它的实现原理和上面的SUM函数类似。
5 LOOKUP的多条件查找
LOOKUP的万金油查找公式完全可以实现多条件查找:=LOOKUP(1,0/((A2:A7=E2)(B2:B7=F2)),C2:C7)
6 VLOOKUP和CHOOSE函数组合
VLOOKUP和CHOOSE函数组合为数组公式进行查询:=VLOOKUP(E2&F2,CHOOSE(TRANSPOSE(ROW(1:2)),A2:A7&B2:B7,C2:C7),2,0)
输入CTRL + SHIFT + ENTER完成输入。
TRANSPOSE形成一个"1行2列"的内存转置数组,里面的内容是:
{"电脑ThinkPad",1760;"手机华为",2938;"iPad苹果",1731;"电脑苹果",1460;"手机三星",2039;"手机VIVO",1629}
这也相当于变相将多条件转换为单条件,从而实现查询效果。
综上几种方法,大都是利用函数转换的方法,将多条件查询转为单条件,从而实现查询功能。

2003版本的公式,感觉有点绕,将就吧

=IF(MAX((IF(A$3:A$15=G3,C$3:C$15,0)>H3)$C$3:$C$15)<H3,"不足",INDEX(B$3:B$15,MATCH(MAX((IF(A$3:A$15=G3,C$3:C$15,0)>H3)$C$3:$C$15),(IF(A$3:A$15=G3,C$3:C$15,0)>H3)$C$3:$C$15,)))

数组公式

如上图左边表格,数据排列方式不便于阅读,现需转化为右侧的排列形式,就需要用到多条件查找;我们可以在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结束输入,形成数据组公式,再向下向右填充即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13376872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存