当前位置: 欣欣网 > 办公

再见 Vlookup+Match,全自动查找公式来了!

2024-04-16办公

最近几天兰色和多列查找公式杠上了。这本是一个很常见的问题,有很多种解法。

如下图所示,需要在右表中根据 姓名 从左表中查找对应的信息。

看到这种问题,很多同学第一时间会想到用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集 。( 绿卡会员 有效期内 免费 )详情点击下方链接