今天给大家分享的一个冷门但有用的函数MODE.MULT。
在介绍它之前,先给大家介绍一下它的哥哥MODE。MODE函数的作用是取众数,或者说从一组数中取出现频次最多的那个数。
举个例子,以下公式返回结果为2,说明A2:A10区域中2出现的次数最多,简称很二。
这时就出现了一个问题,当区域内出现次数最多的数有多个不同值时,MODE函数只会返回其中一个。
如下图所示,A2:A10区域2和3都出现了3次,但MODE函数只返回一个结果:2。
为了解决这个问题,微软响应号召给MODE又生了个弟弟:MODE.MULT。这家伙可以从一组数据中返回出现次数最多的多个值,组成一个垂直数组。
依然以上图所示数据为例,在C2单元格输入以下公式,会返回出现次数最多的两个数值:2和3。
打个响指,这就是MODE.MULT函数的 家庭基本情况,下面再给大家聊聊这家伙具体有啥用法。
如下图所示,A:C是数据源,C列是成绩,同一个人不存在多个相同科目的情况。现在,假设85分以上为优,需要统计科目成绩为优次数最多的学员名单。F列是模拟结果。
=INDEX(A:A,MODE.MULT(IF(C2:C18>85,MATCH(A2:A18,A2:A18,)))+1)
IF(C$2:C$18>85,MATCH(A$2:A$18,A:A,0))
首先使用IF函数判断C列的成绩是否大于85分,如果条件不成立,返回逻辑值FALSE,否则运行MATCH函数。MODE.MULT函数不能直接计算非数值,而MATCH函数返回的结果是每个人名在A列首次出现时的行号,等于将人名替换成了可以被计算的数字。
然后使用MODE.MULT函数计算出现次数最多的行号,返回一个垂直内存数组{2;4;9},它代表了成绩为优次数最多的人所在的行号。
如果你用的是低版本Excel(2019-),需要再嵌套一个small函数:
=IFERROR(INDEX(A:A,SMALL(MODE.MULT(IF(C$2:C$18>85,MATCH(A$2:A$18,A:A,))),ROW(A1))),””)
=INDEX(A:A,
MODE.MULT(
IF(
(B$2:B$18={"数学","英语"})*($C$2:$C$18>85),
MATCH($A$2:$A$18,A:A,)
)
)
)
虽然问题稍有不同,但和案例1相比,依然是相同的配方熟悉的味道。
首先使用IF函数判断B列的科目是否等于{“数学”,”英语”}(这是两个元素的水平数组),同时C列的成绩大于85分,如果两个条件都成立,返回A列人名所在的行号,否则返回逻辑值FALSE。
然后使用MODE.MULT函数计算出现次数最多的行号,最后通过INDEX按行索骥取出人名,即为结果。
如上图所示,A2单元格有一段数据,需要计算其中出现次数最多的字符,A5单元格是模拟结果。
没了,左上角点关注,右下角点个赞,有啥问题可以在VIP微信会员群中提问交流,挥挥手咱们明天再见。
|
 |
Office自学网公众号 |
 |
Office自学网客服 |
|
打开微信扫一扫,Office自学网
专注分享软件安装和视频教程,让你一号在手,办公无忧!