最近几天兰色和多列查找公式杠上了。这本是一个很常见的问题,有很多种解法。
如下图所示,需要在右表中根据 姓名 从左表中查找对应的信息。
看到这种问题,很多同学第一时间会想到用Vlookup+Match的组合,Match查找列数作为Vlookup的第3个参数,可有两个问题很难搞定:
根据多列查找 (如本例中如果部门中有重名的)
反向查找 (如本例根据姓名查找)
所以这个老掉牙组合已经过时了,让同学们看看兰色用了一天写的智能公式:
=FILTER(CHOOSECOLS(A2:E8,MATCH(TOCOL(H1:P1,1),1:1,0)),COUNTIF(G2:G11,C2:C8)>0)
兰色,为了一个多列查找,有必要写这么复杂的公式吗?嘿嘿,让你看看它的功能,估计就会有很多同学想学习了。
1、它只需要一个公式就可以查询全部。
2、列的顺序随意,当然反向查找更不是问题。
最厉害的来了!
3、你可以随意增减查找的列数和行数,公式可以自动扩充。(
如果你想做一个动态查询表格,这个自动扩充的公式肯定会用上的
)
嘿嘿,有没有引起你的学习兴趣?如果有,兰色就把这个公式的原理和运算过程分析一下。
要实现一个公式返回所有行列结查询结果,filter函数是必选。而解决列的顺序则由CHooseCols函数( wps和office365新增函数, 返回一个表格的指定列 )完成。
=CHOOSECOLS(A2:E8, MATCH ( TOCOL(H1:P1,1) ,1:1,0) )
公式说明:
TOCOL(H1:P1,1) : H1:P1可以改为更多列区域,为了除去空白,需要用tocol函数,参数1时可以忽略空白。如果你的版本不支持tocol,可以安装一个免费版的WPS
MATCH ( TOCOL(H1:P1,1) ,1:1,0): 从左表中查找列数,作为ChooseCols的第二个参数,从而筛选出结果列。
最难的区域搞定了!再结Filter加一个条件就OK了
=FILTER(CHOOSECOLS(A2:E8,MATCH(TOCOL(H1:P1,1),1:1,0)), COUNTIF(G2:G11,C2:C8)>0 )
公式说明:
这里用 Countifs 统计G列的姓名在C列是否存在,为了让行数自适应, G2:G11 也 可以设置更多行
兰色说
:在实际工作中,常需要很多函数配合才能解决复杂的难题,为什么高手会你却不会,因为
懒
!遇到难一些的公式就宁肯手工也不想学,久而久之,你就拉开了和高手的距离。(
当然也可能没遇到更好书或课程
),本文兰色写了两个多小时,觉得有用的同学别忘了点右下角的
大拇指
和
在看
哦。
兰色根据多年经验,录制了一全套适合新手和初中级阶段用户学习的Excel教程。包括 Excel表格88个函数用法( 即将更新几十个新函数,示例整理中 )、119个使用技巧、透视表从入门到精通50集、图表从入门到精通186集 。( 绿卡会员 有效期内 免费 )详情点击下方链接