分享

没错,这就是传说中Excel最厉害的查找套路

 Excel不加班 2019-12-26

与 30万 读者一起学Excel

没错,这就是传说中Excel最厉害的查找套路,现在知道还不晚。每个复杂的套路,都是从基础慢慢推导出来的。

筛选公式,就是通过筛选部门,可以自动查找到所有对应值。

基础版:返回满足条件的最大值。

=MAX(IF(条件区域=条件,返回区域))

进阶版:返回满足条件的最大行号,再返回最大行号的对应值。

=INDEX(返回区域,MAX(IF(条件区域=条件,返回行号)))

这2个套路只能查找到一个值,如果是多个对应值都要查找出来,这时就延伸出来最终套路。

最终版:返回满足条件的所有行号,再依次查找所有行号的对应值,最后错误值的显示空白。

=IFERROR(INDEX(返回区域,SMALL(IF(条件区域=条件,返回行号),ROW(A1))),"")

SMALL函数就是获取第N小的值,这样ROW(A1)下拉就依次获取最小的行号,倒数第2小的行号,依次类推,就返回所有对应值。IFERROR函数是为了做容错处理。

这里用LARGE函数代替SMALL函数也可以。

这样,最终公式就出来了。在F4输入公式,按Ctrl+Shift+Enter三键结束,下拉和右拉。

=IFERROR(INDEX(A:A,SMALL(IF($C$2:$C$7=$F$1,ROW($2:$7)),ROW(A1))),"")

返回区域A:A没有锁定,这样公式右拉的时候就会变成B:B、C:C从而查找到每一列的对应值。

格式略作改变,查找每个部门的所有姓名。

在G13输入公式,按Ctrl+Shift+Enter三键结束,下拉和右拉。

=IFERROR(INDEX($B:$B,SMALL(IF($C$2:$C$7=$F13,ROW($2:$7)),COLUMN(A1))),"")

这里只是查找姓名,所以返回区域需要锁定$B:$B。公式右拉要依次获取对应值,ROW函数是下拉生成序号,而COLUMN函数是右拉生成序号。

这个套路厉害在哪?

只要是你觉得很难搞定的问题,用这个套路基本都搞定。套路虽然固定,用法变化无穷。

再举个案例。

原来提取不重复部门是手工操作的,其实用这个套路也可以搞定。

在F13输入公式,按Ctrl+Shift+Enter三键结束,下拉。

=IFERROR(INDEX(C:C,SMALL(IF(MATCH($C$2:$C$7,$C$2:$C$7,0)=ROW($2:$7)-1,ROW($2:$7)),ROW(A1))),"")

MATCH函数就是查找内容首次出现的位置,首次出现的位置如果等于ROW-1,就证明是不重复值,因此返回本身行号。

以不变应万变,才是最厉害的。

推荐:不可思议,MAX+IF组合居然比VLOOKUP查找更牛逼

上篇:进阶版,MAX+IF查找对应值的万能套路

以不变应万变,敌变我不变,万变不离其宗。世间万物,道理都是相通的,你觉得呢?

作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多