
收到粉丝提问:有班级成绩表,如何用函数取得各科成绩最大所在行数据呢?我知道用筛选条件可以做,但这个只是举例问题,实际是大批量统计,不可能一个一个筛选粘贴。
我的思路是用index函数,但无法取得要符合D列且E列数值最大的单元格的行数和列数。如下图所示:

方法一:INDEX结合MATCH函数
按照题主的思路来做是对的,我们可以使用INDEX结合MATCH函数来实现想要的效果。
假设数据位于A、B、C三列,在F、H、G这三列返回筛选结果,可以在F2输入下面的公式:
=INDEX($A$1:$C$10,MATCH(MAXIFS($C$1:$C$10,$B$1:$B$10,$E2),$C$1:$C$10),COLUMN(A1))
向右拖动鼠标填充公式,即可得到想要的结果,注意单元格地址的绝对引用哦。
这个公式通过结合 INDEX、MATCH 和 MAXIFS 函数,实现动态地查找和提取数据。

公式说明:
1、MAXIFS($C$1:$C$10,$B$1:$B$10,$E2):返回特定学科的最大成绩。
2、MATCH(MAXIFS($C$1:$C$10,$B$1:$B$10,$E2),$C$1:$C$10):查找该最大成绩在成绩列中的位置(行号)。
3、INDEX($A$1:$C$10,...,...):根据行号和列号提取数据。
4、COLUMN(A1):用于动态调整列号,以便公式可以自动适应右侧单元格的列号。
方法二:FILTER函数
FILTER 函数是 Excel 365 及更高版本中引入的一个强大的筛选函数,它可以根据一个或多个条件筛选数据。如果你使用的版本支持该函数,可以在F2输入下面的公式:
=FILTER($A$2:$C$10,($B$2:$B$10=E2)*($C$2:$C$10=MAXIFS($C$2:$C$10,$B$2:$B$10,E2)))
向下拖动鼠标填充公式,即可得到想要的结果,注意单元格地址的绝对引用哦。
这个公式通过结合 FILTER 和 MAXIFS 函数,从数据表中筛选出特定学科的最大成绩及其对应的行数据。

公式说明:
1、MAXIFS(C2:C10,B2:B10,E2):返回特定学科的最大成绩,例如 “语” 学科的最大成绩是99。
2、(B2:B10=E2):返回一个逻辑数组,表示哪些行的学科是 “语”。
3、(C2:C10=MAXIFS(C2:C10,B2:B10,E2)) 返回一个逻辑数组,表示哪些行的成绩等于最大值(99)。
4、(B2:B10=E2)*(C2:C10=MAXIFS(C2:C10,B2:B10,E2)) 结合两个逻辑条件,筛选出同时满足学科和成绩条件的行。
5、FILTER(A2:C10,...) 根据逻辑条件筛选数据,返回满足条件的行的数据。
方法三:TAKE函数
TAKE 函数是 Excel 365 及更高版本中引入的一个强大的筛选函数,它用于从数组或范围中提取指定数量的行或列。
TAKE 函数本身并不直接用于筛选最大值,但可以与 FILTER 函数结合使用来实现这一目标。
如果你使用的版本支持该函数,可以在F2输入下面的公式:
=TAKE(FILTER($A$2:$C$10,$C$2:$C$10=MAXIFS($C$2:$C$10,$B$2:$B$10,E2)),1)
向下拖动鼠标填充公式,即可得到想要的结果,注意单元格地址的绝对引用哦。

公式说明:
1、MAXIFS(C2:C10, B2:B10, E2):返回特定学科的最大成绩,例如 “语” 学科的最大成绩是99。
2、C2:C10 = MAXIFS(C2:C10, B2:B10, E2):返回一个逻辑数组,表示哪些行的成绩等于最大值。
3、FILTER(A2:C10, C2:C10 = MAXIFS(C2:C10, B2:B10, E2)) 根据逻辑条件筛选数据,返回满足条件的行的数据。
4、TAKE(..., 1) 从筛选结果中提取第一行。
以上方法都能轻松筛选出最大值所在行数据,根据自己版本和习惯选择适合的方法,当然,使用时要根据实际情况对数据范围做调整哦!若还有疑问,欢迎给小兔留言~
想了解更多精彩内容,快来关注