index函数隔30行取值怎么用(详解indexsmalllif)

今天跟大家介绍下使用index smalll if row函数组合进行一对多查询,有小伙伴可能会问方法那么多为什么偏偏介绍这么复杂的函数组合呢,因为这个组合通用性最高,学会这个组合基本上所有的一对多查询都可以使用这种组合来解决

我们先来看一下今天的例子

index函数隔30行取值怎么用(详解indexsmalllif)(1)

是不是觉得函数非常难,别着急,让我们来一步一步剖析下,

1.判断位置

既然我们想用index函数进行一对多查询就必须判断2班在什么位置,哪一个函数具有这样的功能呢,当然是if函数,如下图

index函数隔30行取值怎么用(详解indexsmalllif)(2)

我们使用if函数并运用数组判断在班级列等于2班的元素所在的位置,if函数第二参数为条件正确时返回的值,我们使用row函数取出2班所在的行号,因为不需要错误值我们可以省略第三参数。图中标红的区域为if函数运算结果

2.取出位置

然后我们用small函数取出我们提取出来的行号

index函数隔30行取值怎么用(详解indexsmalllif)(3)

small函数用于在数组中提取元素,第一参数为数组区域,第二参数为想提取数数组中的第几个元素,

我们用row(1:1),构建一个整数序列(即1,2,3,4,5,6,等的整数序列)

我们可以看到整个数组中一共就四个元素,所以当row函数到4时就可以提取出全部行号

如图中蓝色填充

3.得到结果

最后我们用index函数返回相应的姓名

index函数隔30行取值怎么用(详解indexsmalllif)(4)

因为使用row获取的行号是整个表格的行号,所以index函数的第一参数必须选择整列否则结果不对

最后我们再使用IFERROR进行屏蔽错误值,不使用也是没关系的

在这里需要说明的是我们运用的是数组公式,当公式输入完成后需要按ctrl shift 回车三键填充,对函数以及数组还不了解的可以翻看我之前的文章

其实对于函数的使用最主要的还是逻辑性,要具有从点到面的思维能力,一步一步的得到自己想要的结果

最后再我们再来查询下是2班且通过的姓名

index函数隔30行取值怎么用(详解indexsmalllif)(5)

公式如下

=IFERROR(INDEX(B:B,SMALL(IF(($A$2:$A$12=$G$3)*($C$2:$C$12="是"),ROW($A$2:$A$12)),ROW(1:1))),"")

怎么样看懂了吗,如果看懂了请在下方留言看懂了让小编知道你学会了

你们的关注点赞和转发是我持续更新的动力

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页