分享

一个万金油函数(Index Small If Row)

 L罗乐 2016-07-16

很多人在Excel中用函数公式做查询的时候,都必然会遇到的一个大问题,那就是一对多的查找/查询公式应该怎么写?大多数人都是从VLOOKUP、INDEX MATCH中入门的,纵然你把全部的多条件查找方法都学会了而且运用娴熟,如VLOOKUP和&、SUMPRODUCT、LOOKUP(1,0/....,)但仍然只能对这种一对多的查询望洋兴叹。


今天讲的INDEX SMALL IF ROW的函数组合,就是解决一对多查询的一种通式,如果你能掌握,那在Excel里基本上就没有什么查询你是实现不了的了(除了INDIRECT RC引用)。


如下图,为示例数据和查询要求。根据F2单元格的品名,分别查询,订单号和数量。




答案:


E5:=IFERROR(INDEX(A$2:A$15,SMALL(IF($B$2:$B$15=$F$2,ROW($1:$14),4^8),ROW(A1))),''),Ctrl Shift Enter,三键下拉右拉。


公式简析:

1、最里面一层的If函数,IF($B$2:$B$15=$F$2,ROW($1:$14),4^8)判断源数据的B列是否等于F2,如果是就返回B2:B5区域对应的第几行,否则,就返回4^8。就是4的8次方幂,即65,536,这在xls格式文档中,相当于最大行号,在xlsx格式则不然。


2、Small函数,SMALL(IF($B$2:$B$15=$F$2,ROW($1:$14),4^8),ROW(A1)),取If判断结果的第一小的值,下拉就是,取第二小的值。


3、Index函数,INDEX(A$2:A$15,SMALL(IF($B$2:$B$15=$F$2,ROW($1:$14),4^8),ROW(A1)))就是返回A2:A15区域某一行的值。


4、最外层的Iferror函数,容错函数,如果Index取得值为错误值,则返回空值。


通过这个函数我们可以看下,根据不同的品名,查询的数据。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多