摘要:可以看到,要查找部门A、B对应两列数量,无论是行还是列,都不唯一。如果用VLOOKUP进行查找,要么需要添加辅助列,要么会写出很长很复杂的公式。
“超新函数”FLOOKUP:
不是VLOOKUP不够好,而是新函数更妙更巧!
场景:多对多查找。根据部门名称及行标题查找对应的数据。
可以看到,要查找部门A、B对应两列数量,无论是行还是列,都不唯一。如果用VLOOKUP进行查找,要么需要添加辅助列,要么会写出很长很复杂的公式。
嘿嘿,别着急,今天带来“超新函数”FLOOKUP,看看FLOOKUP函数如何解决这个问题。
公式:
=FLOOKUP(B3:E7,A3#,B1#)
解析:
FLOOKUP函数用法,FLOOKUP(筛选区域,条件1,条件2)
第一参数B3:E7为筛选数据区域,第二参数A3#为纵向筛选条件,第三参数B1#为横向筛选条件。
其中,第二、三参数均为0与非0数组(TRUE、FALSE),A3#为公式COUNTIF(G2:G3,B3:B7)计算得到的结果,B1#为公式COUNTIF(G1:I1,B2:E2)计算结果。
也可以不用辅助列,直接用公式:
=FLOOKUP(B3:E7,COUNTIF(G2:G3,B3:B7),COUNTIF(G1:I1,B2:E2))
公式结果返回所有部门为A、B的行(1、3、5),对应所有标题行为部门、数量的列(1、2、4)。
那么,是不是现在就立即打开EXCEL,去寻找FLOOKUP试一试呢?
千万别,您会失望的!
FLOOKUP函数是通过LAMBDA实现的一个自定义函数,需要手动操作完成自定义。
方法是:
公式——名称管理器——新建——名称处填写FLOOKUP(当然也可以自己命名为其他名称)
接着在引用位置处,复制下面公式粘贴即可。
=LAMBDA(筛选区域,条件1,条件2,FILTER(FILTER(筛选区域,条件1),条件2))
完成自定义后,再尝试用FLOOKUP解决多多对查找吧,是不是感觉很厉害!
那么,FLOOKUP能够完成多对多查找的原理又是怎样的呢?
核心在于FILTER+FILTER组合,上面问题实际用下面的公式可以完成查找。
公式:
=FILTER(FILTER(B3:E7,COUNTIF(G2:G3,B3:B7)),COUNTIF(G1:I1,B2:E2))
解析:
FILTER(B3:E7,COUNTIF(G2:G3,B3:B7))先筛选出符合部门列为A、B的所有行数据,再把得到的结果作为二次FILTER筛选的数据区域,COUNTIF(G1:I1,B2:E2)为二次筛选的条件。
FILTER+FILTER也就是定义FLOOKUP函数的基础,结合LAMBDA自定义函数,定义好参数及计算表达式,FLOOKUP就是您多对多查找的神器啦!
来源:Excel花园一点号