EXCEL高效实用的万能查询函数公式

您所在的位置:网站首页 wps多条件函数公式 EXCEL高效实用的万能查询函数公式

EXCEL高效实用的万能查询函数公式

2023-04-04 06:19| 来源: 网络整理| 查看: 265

#EXCEL# #INDEX函数# #查询#

使用环境:WIN10 HOME版,WPS 2019

EXCEL表格中查询是用得比较多的,尤其面对符合条件的记录是多条或者不确定数量的时候,INDEX函数是最适合的。

其函数原型为:INDEX(array, row_num, [column_num]),第一个参数为筛选数据的目标区(或者叫数据源区域),第二个参数为行号,第三个参数为列号。这里要注意行号、列号是第一个参数里面的相对行号或者列号,不一定是表格中绝对行号、绝对列号。

特殊应用有单行或者单列里面筛选数据记录。

一、用SMALL结合IF进行符合多条记录查询的经典应用

一对多查询

具体使用公式为:{=IFERROR(INDEX($A$2:$B$10,SMALL(if(EXACT($A$2:$A$10,$G$1),row($A$2:$A$10)-1,4^100),row($a1)),MATCH(d$1,$A$1:$B$1,0)),"END")},这里要别忘了公式输入完,要用CTRL+SHIFT+ENTER键,给公式带上{}号,即数组公式。

第一个参数就是筛选数据的目标区域为$A$2:$B$10,注意这里是去掉了表头的。所以后面用ROW()函数获取绝对行号后要减去表头。

第二个参数是行号,是一个small获取的符合条件的行号数组,符合条件的行我们返回它真实的行号,不符合条件的行,我们设定一个大于第一个数据区域的最大行号数即可,通常我们设定一个比较大的数,比如我习惯用4^100,不管数据区域多大我们不用考虑它了。

SMALL函数的第二个参数就是取第一小、第二小。。。。。,所以用ROW($A1)来获取递增数。

第三个参数获取列号就比较简单。

用IFERROR函数来显示不符合条件的记录,即”END“。

二、用于剔除重复值筛选

具体使用公式为:=IFERROR(INDEX($A$2:$a$10,SMALL(if(exact(match($A$2:$A$10,$A$2:$A$10,0),row($A$2:$A$10)-1),row($A$2:$A$10)-1,11),row($a1))),"END")

这里我们用MATCH函数进行剔除重复数值。有多个重复值,match返回的行号是第一条记录,因此公式中我们只记录第一条记录的行号。不是第一条记录,match($A$2:$A$10,$A$2:$A$10,0)获取的行号与row($A$2:$A$10)-1获取的行号是不相等的。

如果我们公式中的目标区域超过了实际数据区,要进行空值行判断,比如if((isblank($A$2:$A$10000)=false)*exact(match($A$2:$A$10000,$A$2:$A$10000,0),row($A$2:$A$10000)-1),row($A$2:$A$10000)-1,4^100),否则,第一条空行也会被返回。

实际应用中,我们筛选条件可能比较复杂,直接在IF条件判断里面增加即可。其次根据应用场景不同,不仅可以用SMALL,我们还可以用LARGE函数,那么不符合记录的行号值我们要从小设定。

大家还用INDEX函数做了哪些更有意义的应用呢?欢迎评论区分享。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3