您当前的位置:首页 > 互联网教程

万能查询函数(Index+Small+If+Row)

发布时间:2025-05-20 21:43:35    发布人:远客网络

万能查询函数(Index+Small+If+Row)

一、万能查询函数(Index+Small+If+Row)

1、介绍一个独特的函数组合,旨在快速筛选并提取特定条件下的数据,无论是单条件还是多条件,均能一次性高效完成。

2、核心功能基于四个函数:INDEX、SMALL、IF与ROW。

3、首先,INDEX函数发挥关键作用,其结构为INDEX(查询区域,第几行,第几列),帮助我们精确定位目标数据。

4、紧随其后,SMALL函数聚焦于数组中的最小值,参数指定返回第几个最小值,灵活适应各种需求。

5、IF函数是判断工具,它根据指定条件的真假,决定返回行号或其他值,确保筛选过程的精准性。

6、整个组合分为三个步骤诠释:获取所有符合条件的行号、按顺序排列这些行号、通过INDEX获取查询值。

7、第一步,利用IF函数嵌入ROW函数,计算所有满足条件的行号,保证了高效提取数据的起点。

8、第二步,将获得的行号排序,以便后续精准定位最小值及其后续值,通过SMALL与ROW的巧妙结合实现。

9、最终一步,INDEX函数根据排序后的行号,检索并返回查询值,确保了数据筛选与提取的高效性。

10、对于多条件查询,只需在IF函数内调整逻辑,通过乘法运算符(*)进行条件组合,确保筛选过程的灵活性与准确性。

11、此方法为数据筛选提供了强大支持,简化了复杂数据查询与提取过程,极大地提高了工作效率。

二、关于INDEX和small数组公式的疑问,请excel高手帮忙

这个公式是在$d$2:$d$11筛选B13的内容,并返回对应B列的内容。

if($d$2:$d$11=$b$13,row($d$2:$d$11),100):

如果$d$2:$d$11=$b$13,就取行号2:11,否则返回100,假设D3和D10=B13,如下图所示:

{100;3;100;100;100;100;100;100;10;100}

嵌套SMALL({100;3;100;100;100;100;100;100;10;100},ROW(1:1))后,分别提取第1小第2小第3小,则公式下拉的结果为3、10、100、100……

最后面嵌套INDEX(B:B,3、10、100、100……)&""

则分别返回B3、B10、B100、B100,B3和B10&""(连接一个零字符的空文本),不会改变原单元格(B3和B10)的内容,而B100是空单元格,&""后会返回一个空文本,如果不&"",则会返回数字0,所以公式中最后的&""就是为了D列不满B13内容的单元格返回一个空值,而不是0设置的。

使用此公式,if($d$2:$d$11=$b$13,row($d$2:$d$11),100)中最后的100必须大于前面单元格区域中的所有行号(前面最大是11),且B100必须为空。

另外,如果B列中的数据原来是数字,使用此公式后,取出来的会变成文本型数据,因为连接一个空文本。

三、ExcelINDEXSMALL函数用法

=INDEX(结果列,SMALL(IF(条件,ROW满足条件的行号,较大的空行行号),ROW(1:1)))&""

【原理】1、数组运算;2、空单元格与空文本合并。

【实例】如图:筛选张三的领用记录(条件是E1单元格的“张三”)。

=INDEX(B:B,SMALL(IF(A$2:A$8=E$1,ROW(A$2:A$8),4^8),ROW(1:1)))&""

【解析】:对照“必杀技”,多数人已可以瞧出一点端倪来。

1、条件模块:IF(A$2:A$8=E$1,ROW(A$2:A$8),4^8)

表示如果A2:A8的姓名等于E1的“张三”,则返回A2:A8的行号,否则返回4^8,即65536。

IF(如果,则,否则——这语言不难读吧

条件模块经过数组运算,因为A2、A5、A8满足条件,所以返回的是行号数组{2;65536;65536;5;65536;65536;8}。

2、排序模块:SMALL(IF,ROW(1:1))

公式的第1行,ROW(1:1)返回{1},在第2行返回{2}……因此,利用SMALL+ROW可以将条件模块返回的行号数组从小到大依次排序得出。当然,此例中SMALL({2;65536;65536;5;65536;65536;8},1)得到的是2,第2小的是5,第3小的是8,第4小及以后都是65536。

3、引用模块:INDEX(引用列,SMALL得到的行号)

=INDEX(B:B,2)——引用B2,=INDEX(B:B,65536)——引用B65536

当公式到了第4行,3个满足条件的记录都已经找出来,此时公式是=INDEX(B:B,65536)&“”

因为Excel2003的最大行数是65536行,而在这一行中,一般不会有人输入数据,是空单元格。因此,利用空单元格与空文本合并返回空文本的特性,将超出结果数量的部分不显示出来。



相关内容FAQs: