一个万金油函数(Index Small If Row) 下载本文

内容发布更新时间 : 2025/1/10 2:29:04星期一 下面是文章的全部内容请认真阅读。

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

很多人在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取得值为错误值,则返回空值。通过这个函数我们可以看下,根据不同的品名,查询的数据。