Excel情报局
职场联盟Excel
大家好,今天我们来解决群里的一位粉丝咨询的问题:如何获取"第一次大于80分的成绩"?,在这里小编简单整理了两种解决方案,当然解题的方法肯定不局限于这两种,希望大家发散思维,找到更多适合自己的方法。
如下图所示:
是一位同学的每月月末考核成绩记录,A列是日期,B列是对应的成绩。我们想要在D2单元格获取到第一次大于80分的成绩是多少。因为大于80分的成绩有B4单元格的“86”与B6单元格的“95”,而我们需要的只是第一次大于80分的成绩“86”。
第一种方法使用INDEX函数与MATCH函数组合。
首先输入公式:
=B2:B7>80
我们让B2:B7区域内的每个单元格的数字大于80,会输出一列逻辑判断值组成的数组溢出结果,当B2:B7区域内单元格数字大于80时,返回逻辑值TRUE;反之,返回逻辑值FALSE。
即:{FALSE;FALSE;TRUE;FALSE;TRUE;FALSE}
继续向外面嵌套MATCH函数:
=MATCH(TRUE,B2:B7>80,0)
我们利用MATCH函数查找逻辑值“TRUE”
在数组{FALSE;FALSE;TRUE;FALSE;TRUE;FALSE}中进行精确查找,查找到第一个逻辑值“TRUE”出现的位置是“3”。
最后再向外嵌套INDEX函数:
=INDEX(B2:B7,MATCH(TRUE,B2:B7>80,0),1)
利用INDEX函数,查找B2:B7区域内,第3行与第1列交叉位置的值“86”,至此第一次大于80分的成绩“86”就得到了。
这里需要注意的是,INDEX函数的第3参数列序号“1”与第一参数B2:B7区域其实是重合了,所以可以省略第三参数,变成这样更简洁:
=INDEX(B2:B7,MATCH(TRUE,B2:B7>80,0))
第二种方法使用FILTER函数与TAKE函数组合。
首先输入FILTER函数:
=FILTER(B2:B7,B2:B7>80)
利用FILTER函数,筛选B2:B7区域内符合条件B2:B7>80的所有成绩,所以B列成绩大于80分的所有记录会被筛选出来,数组自动溢出为{86;95}。
最后使用TAKE函数:
=TAKE(FILTER(B2:B7,B2:B7>80),1)
TAKE函数可以数组开头或结果返回行或列。
所以利用TAKE函数,将上一步筛选出来的数组{86;95}中的第一个数字提取出来即“86”,至此第一次大于80分的成绩“86”就得到了。
〖往期知识点精彩超链接点击阅读〗