领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

Index的这种用法连微软和WPS都没预料到,仅仅只需要改个符号…

nixiaole 2025-06-12 15:07:01 知识剖析 3 ℃

上一期向大家演示了Index函数的基本用法。


今天要介绍的Index函数的这种神秘用法在微软和WPS的官方都没有相关介绍。学会这个新用法的密码也仅仅只需要改个标点符号而已。

*

*

*

下面我就给大家介绍这种用法。

我们先来看index的语法。

INDEX(array, row_num, [column_num])  //数组形式
INDEX(reference, row_num, [column_num], [area_num])  //引用形式

上面这两种用法其实可以综合成一种就是引用形式。即是

INDEX(reference, row_num, [column_num], [area_num]) 

当第一个参数选中的单元格区域多于1个的时候,第四个参数就有存在意义了。当第一个参数有且仅有一个选中的单元格区域,则第四个参数就无需存在了。


因此我们在实际运用的时候,在绝大多数情况下只需要记住第二种所谓的“引用形式”就可以去游历江湖了。

我们先回顾一下上一期关于Index函数返回的数据行数最多只能返回一行数据

那么,如果我希望用Index返回更多行数据,Index是否可以做到呢?

答案是肯定的,Index可以做到,并且微软和WPS都没预料到这种用法。


下面,我们正式开始介绍这种神秘方法。

1、excel中的数组是有方向的:

我在昨天的微条件里提到过excel数组是有方向的,数组的方向有行方向和列方向这两个方向。

2、Index的第二个、第三个、第四个参数都可以是数组

即这个函数在实际运用的时候可以看起来是这样的形式的:

=INDEX((A1:A5,A10:A15), {1,2,3,4,5}, {1,2,3,4,5}, {1,2}) 

请注意:最后一个参数如果以数组形式呈现那么数组元素个数与第一个参数的单元格区域的个数是一致的,即最后一个参数数组的元素个数只能比第一个参数的区域个数少或相等

在上面的公式形式中,第一个参数是:(A1:A5,A10:A15),当存在多个单元格区域的时候,应用小括号将各个单元格区域括起来,并各个单元格区域以“,”号相隔。

上面例子中的第一个参数单元格区域是2个,因此第四个参数的数组元素个数最多是2个。

基于上面的2个核心观点,我们接下来开始我们今天的演示

一、通过第二个参数指定Index返回指定行。

在这个方法看来,Index的第二个参数,就是获取指定行数据的参数。

Index(A2:E18,{2,4,6},2) //本动演示的公式。

//第一个参数:A2:E18,即是选定学生序号、姓名、各次考试成绩这几列,一共有5列
//第二个参数:{2,4,6},即是我想返回的第二行、第四行、第六行的数据
//第三个参数:2,即是我想返回的是第一个参数中的第二列数据,也就是姓名这一列的数据。

可以看到,我最终得到了我想要的数据,即第2、4、6行姓名列的三个数据。

可惜的是,这三个数据是排成一行的。并不是像我们所要求的那样,排成一列。

二、通过第三个参数指定Index返回指定列。

在一的基础上,我们再来指定Index的第三个参数,指定我们想要的列。

上图演示中的函数

INDEX(A2:E18,{2,4,6},{1,2,5})
//第一个参数:A2:E18,即是选定学生序号、姓名、各次考试成绩这几列,一共有5列
//第二个参数:{2,4,6},即是我想返回的第二行、第四行、第六行的数据
//第三个参数:{1,2,5},即是我想返回的是第一个参数中的第1、2、5列的数据,也就是序号、姓名和平均成绩这三列的数据。

然而,经过这么一通操作后,得到的数据完全不是我们想要的结果。

我们的本意是:我要得到2、4、6这三行数据,每行数据分别是序号、姓名和平均成绩这三列这三列的数据。

但我们这样操作之后,得到的却是:第2行的序号列数据,第4行的姓名列数据,第6行的平均成绩列数据。

而且,此时,如果第二个参数元素个数和第三个参数元素个数不一致的时候,还会出现#N/A错误。。

这完全不是我们想要的。

那么我怎样才能得到我们想要的呢?

重头戏来了!重头戏来了!重头戏来了!重要的事情说三遍!

三、将第二个参数中的数组方向改一下,即是将数组中元素分隔符“,”更改为“;”就能达成我们的预期。

我们看看演示

=INDEX(A2:E18,{2;4;6},{1,2,4,5})
//第一个参数:A2:E18,即是选定学生序号、姓名、各次考试成绩这几列,一共有5列
//第二个参数:{2;4;6},即是我想返回的第二行、第四行、第六行的数据
//第三个参数:{1,2,4,5},即是我想返回的是第一个参数中的第1、2、5列的数据,
//也就是序号、姓名、期末和平均成绩这四列的数据。

//***特地将第三个参数增加了一列。

此时,我们要的“我要得到2、4、6这三行数据,每行数据分别是序号、姓名、末期和平均成绩这三列这四列的数据。”已经出现了。

我们得到了我们想要的结果。

因此,通过将第二个参数数组的方向由行方向更改为列方向,我们得到了我们想要的返回多行数据的结果同时,第二和第三个参数哪怕数组元素个数不一样,也不会出现“#N/A”错误

四、接下我们看看第四个参数的神奇之处。

要正确利用第四个参数,那么我们就需要对第一个参数做出相应的变动。

INDEX((A2:E4,A5:E9,A10:E13,A14:E16),{2;4;9;14},{1,2,3,4},{1,2})
//1、通过Index的第二个参数,返回第2,第4,第9,第14行数据
//2、第三个参数,指定列第1列,第2列,第3列,第4列
//3、第一个参数,将原有一个大的单元格区域细分成按班级划分的4个区域
//4、第四个参数,更改成四个区域中的任意两个区域,这里我们先定是1、2两个区域

当我们满怀期待地确认公式时,却又得到了我们不想看到的结果。

于是我们对第四个参数也进行方向更改,当第四个参数的行方向变更为列方向,再来看演示:

INDEX((A2:E4,A5:E9,A10:E13,A14:E16),{2;4;9;14},{1,2,3,4},{1;2})
//1、通过Index的第二个参数,返回第2,第4,第9,第14行数据
//2、第三个参数,指定列第1列,第2列,第3列,第4列
//3、第一个参数,将原有一个大的单元格区域细分成按班级划分的4个区域
//4、第四个参数,更改成四个区域中的任意两个区域,这里我们先定是1、2两个区域

这次,我们得到了相关数据,但是还有两行找不到结果。

为什么?

因为,我们设定要取的是2,4,9,14行的数据,然而因为第四个参数的限制,只能取第1、2两个区域的数据,因此后面两行的数据分别是属于第3、4两个区域的。故而,这后面两行显示为“#N/A”错误。

思考:第四个参数影响结果的方式

1、第四个参数受第二个参数的影响:如果第一个参数是多个区域,第四个参数如果设置的数量少于第二参数所设定的行数,那么将会出现一部分行无法查到数据。

2、第四个参数受Index函数机制的影响:如果第四个参数设置的是多个区域,那么第二个参数中所涉及到单个区域有多行数据返回要求时,每个区域都将只会返回满足条件的首行数据。

3、当第四个参数仅设置为单一区域时,则会返回第二个参数中所涉及的设定区域的所有行。

4、第四个参数受数组方向影响:第四个参数数组必需是列方向上的数组。

最后,请看完美的查找

INDEX((A2:E9,A10:E16),{2;2},{1,2,3,4},{1;2})

/*
第二个参数中的每个元素,都将是对应到第四个参数中各区域的对应行。
*/

小结

1、要利用好该用法的核心要求

2、当第四个参数出现的时候,也要注意第四个参数数组的方向必须是列方向的数组

3、当第四个参数以多个元素出现的时候,意味着各区域只会出现一行查找记录

4、后三个参数,如果要以数组形式呈现,那么数组元素必需是数字。

5、第三个参数如果是数组,其元素的顺序决定了最终查找结果的列的呈现顺序。

好了,今天就到这里,关于Index函数的其他用法,请阅读后续讲解。


要想下班早,函数用好少不了。关注我,点滴学习,持续进步。

最近发表
标签列表