No.1查找第一次和最后一次出现的记录

-01-

查找第一次记录

下图左表是数据源,记录的是某公司各部门的人员。现在的要求是查找出各部门第一次出现的记录,包括部门和姓名,结果如右表所示。

首先,需要把部门这一列提取出来,实际就是提取不重复的部门。在E3单元格输入下面的公式,按ctrl+shift+enter三键,下拉填充。

=INDEX(B:B,SMALL(IF(MATCH(B$3:B$18,B:B,)=ROW($3:$18),ROW($3:$18),4^8),ROW(A1)))&""

上面那个提取不重复值的公式,以前也说过好多次了。不太明白的小伙伴可以查看之前的文章《提取不重复值,你还不会吗?学起来吧!方法1:match=row》。

然后在F3单元格输入公式=VLOOKUP(E3,B$3:C$18,2,0),下拉填充。用vlookup函数查找各部门第一次出现的人员姓名。
如果你有filter函数的话,就更简单了。在E2单元格输入公式=FILTER(A2:C18,MATCH(B2:B18,B:B,)=ROW(2:18)),自动扩展出结果。
最后来分享下vba代码的方法。
代码如下,用的是刚学的字典。

-02-

查找最后一次记录

现在来查找各部门最后一次出现的记录,结果如右表所示。
首先,还是需要把不重复的部门提取出来。同样在E3单元格输入下面的公式。
然后在F3单元格输入公式=LOOKUP(1,0/(E3=B$3:B$18),C$3:C$18),下拉填充。用lookup函数查找各部门最后一次的人员姓名。

细心的小伙伴可能发现了,左表标颜色的记录和右表结果的顺序不一样。那是因为E列的部门提取的是第一次出现的,F列的姓名是最后一次的。

如果想要右表的结果和左表记录的顺序一样,可以在E3单元格输入下面的公式,按ctrl+shift+enter三键,右拉下拉填充。这个公式用的是多维引用。

=INDEX(B:B,SMALL(IF(COUNTIF(OFFSET($B$3:$B$18,ROW($1:$16)-1,),$B$3:$B$18)=1,ROW($3:$18),4^8),ROW(A1)))&""

如果有filter函数,会更简单些。在E2单元格输入公式=FILTER(A2:C18,COUNTIF(OFFSET(B2:B18,ROW(1:17)-1,),B2:B18)=1),会自动扩展出结果。
最后来分享下vba代码的方法。这个顺序和用lookup那种方法的顺序是一样的。
代码如下:
链接:

https://pan.baidu.com/s/1ml_lP-GjljPOjAY0kWAC7A

提取码:c531
(0)

相关推荐