Vlookup、Lookup、Xlookup是Excel查找函数中的三剑客,好象没有它们搞不定的查找难题。但,昨天兰色翻到的的一用户提问,让这三个函数都傻眼了。 下图户籍表中,C列为户编号。每户有N个成员,户编号每户唯一。(如户编号275的家庭有两个成员,户主和儿子) 问题来了:根据i列户编号,从左表中查找出该编号的所有家庭成员,而且是同时查找多个户编号。 别说多个编号同时查找,就是只查找一个户编号,Vlookup、lookup、和xlookup都很实现。那么上图演示中到底用了什么公式,这么牛X? 别急,兰色要一点点揭开这个最牛查找公式的谜底。 在office365中新增了 Filter函数 ,它可以很简单的实现一对多查找: =FILTER(B2:G39,C2:C39=I2) FILTER函数的工作原理是: 第1个参数给定一个数据表,根据第2个参数返回的true(条件成立)或Flase(条件不成立)来确定结果为True的行。 我们把=FILTER(B2:G39,C2:C39=I2)中的C2:C39=I2拆出来放在H列,来看一下筛选的过程: 所以,学会用filter函数的关键,就是构建第二个参数的条件。 本例中需要同时查找多个户编号,条件该怎么设置呢? 这样?把一个单元格换成区域。哦,出错了! =FILTER(B2:G39,C2:C39=I2:I3) 其实,多对多的对比可以转换为多对一。我们可以用textjoin函数(office365新增)把i列的户编号连接起来。 =TEXTJOIN(',',,I2:I3) 然后再进行用isnumber+find函数组合逐一对比是C列的编号是否包含在合并的户编号中。 =ISNUMBER(FIND(C2,$K$2)) 当然,上图中只是为了演示计算过程,在实际设置公式时是不需要辅助列的,直接用整个C列区域对比: =FILTER(B2:G39,ISNUMBER(FIND(C2:C39,TEXTJOIN(',',,I2:I5)))) 兰色说:今天用了两个office365新增函数解决多对多查找的难题。可能有人问不用新函数可以解决吗?可以,但公式无比复杂,不是一般用户能掌握的。但大家可以试试多用辅助列,也许可以解决这个问题。 |
|