大数跨境
0
0

巧用数组公式,解决多条件查找问题(查找每个人最新证书及获取日期)

巧用数组公式,解决多条件查找问题(查找每个人最新证书及获取日期) Excel数据分析之道
2021-10-12
2

上一篇文章介绍了,如何利用SUMIFS函数代替查找函数做多条件查找,这只能在查找结果是数值的情况下才能用。


如果查找结果是文本字符串呢?


此时,可以联合使用MATCH函数和INDEX函数做数组公式。


下图是一个例子,要求把每个人的最新职称及获取时间提取出来。



所谓最新职称及获取时间,就是每个人的最大日期(因为最新时间嘛)及其对应的证书名称,因此可以先计算每个人的最大日期,然后再提取证书名称。


提取每个人的最大日期是下面的数组公式(高版本可以直接使用MAXIFS函数,这里重点介绍数组公式的实现方法):


=MAX(IF($A$2:$A$10=F2,$C$2:$C$10,""))


这个公式的含义是:先用IF函数判断A列的哪些单元格是指定的姓名,如果是,就把C列的日期留下来,如果不是,就用空值代替,这个判断的结果,是一个由具体日期和空值组成的数组:


{"";"";41433;"";"";"";"";"";""}


再用MAX函数,计算这组数的最大值:


MAX({"";"";41433;"";"";"";"";"";""})


就得到了某个人的最新证书日期。


提取最新证书名称是下面的数组公式:


=INDEX($B$2:$B$10,MATCH(F2&I2,$A$2:$A$10&$C$2:$C$10,0))


这个公式的含义是:


(1)使用INDEX函数准备从B列提取证书名称;


(2)从第几行提取数据呢?使用MATCH函数来定位;


(3)最新证书名称的行号位置,是由两个条件组成的:

  1. 在A列判断姓名;

  2. 在C列判断是否为该姓名的最大日期;


因此在公式中,将A列和B列做字符串连接,生成一个数组:


$A$2:$A$10&$C$2:$C$10


也就是:


{"曹建龙40970";"高飞41630";"安云太41433";"曹建龙42962";"安志明41931";"高飞43532";"高明40511";"高明42861";"曹建龙43690"}


然后将该姓名与该姓名的最大日期连接起来,作为一个组合条件:F2&I2,也就是条件:"安云太41433"


这样,使用MATCH函数从构建的数组中,查找的 "安云41433" 位置。


这个位置,就是指定姓名的最新证书所在的位置。


最后,使用INDEX函数从B列取出结果。


-----------------------

关于数组公式基本知识,将在下一篇文章做全面介绍。



---------------

函数公式精选文章




【声明】内容源于网络
0
0
Excel数据分析之道
全面介绍Excel在企业数据分析中的各种应用,实际案例模板分享,经验心得,帮助个人和企业提升Excel应用能力。
内容 1106
粉丝 0
Excel数据分析之道 全面介绍Excel在企业数据分析中的各种应用,实际案例模板分享,经验心得,帮助个人和企业提升Excel应用能力。
总阅读251
粉丝0
内容1.1k