如何在Excel中从含频数的表格计算均值、中位数与众数?
加权分数的均值、中位数、众数计算方法(Excel)
假设你的分数列是A2:A8(4到10),对应出现次数列是B2:B8,以下是无需展开所有分数的直接计算方法:
均值(加权平均)
直接使用加权平均公式,通过SUMPRODUCT计算总分和,再除以总次数:
=SUMPRODUCT(A2:A8, B2:B8)/SUM(B2:B8)
SUMPRODUCT(A2:A8, B2:B8)会计算每个分数乘以对应次数的总和,SUM(B2:B8)是总次数,两者相除就是加权均值——这比普通的AVERAGE函数更适配加权数据场景。
中位数
Excel 365及以后版本(动态数组支持)
用动态数组公式直接计算:
=MEDIAN(INDEX(A2:A8, MATCH(SEQUENCE(SUM(B2:B8)), SCAN(0, B2:B8, LAMBDA(a,b,a+b)), 1)))
公式逻辑:
SUM(B2:B8)计算总次数SEQUENCE(...)生成从1到总次数的位置序列SCAN(...)计算次数的累计值,确定每个分数对应的位置区间MATCH(...)匹配序列位置对应的分数行号,INDEX提取对应分数- 最后用
MEDIAN取中位数
旧版Excel
- 先计算累计次数:在C2输入
=B2,C3输入=C2+B3,下拉到C8 - 计算总次数
N=SUM(B2:B8) - 若N为奇数,中位数位置是
(N+1)/2,用公式提取对应分数:=INDEX(A2:A8, MATCH((N+1)/2, C2:C8, 1)) - 若N为偶数,取
N/2和N/2+1位置对应分数的平均值:=(INDEX(A2:A8, MATCH(N/2, C2:C8, 1)) + INDEX(A2:A8, MATCH(N/2+1, C2:C8, 1)))/2
众数
众数是出现次数最多的分数,直接定位最高次数对应的分数即可:
=INDEX(A2:A8, MATCH(MAX(B2:B8), B2:B8, 0))
MAX(B2:B8)获取最高出现次数,MATCH找到该次数对应的行号,INDEX提取对应分数——这比MODE.SNGL更高效,因为后者需要展开所有分数才能识别众数。
内容的提问来源于stack exchange,提问作者Ohto Nordberg
相关产品推荐
相关产品推荐

