Excel中计算样本对应中位数尺寸类别的公式实现问询
计算样本中位数尺寸类别的Excel方案
嗨,我来帮你搞定这个问题!根据你说的场景——每个样本行对应不同size等级的植株数量,要在G列算出对应的中位数尺寸类别,这里有几个实用的Excel公式实现方案,我会详细拆解给你看:
核心思路
中位数的本质是把所有植株按尺寸从小到大排序后,中间位置对应的类别。所以我们需要先计算每个尺寸类别及之前的累积植株数,再找到中位数位置对应的那个累积区间,就能得到对应的尺寸类别。
前提注意
确保你的尺寸类别列(比如B到F列,表头是size1、size2...)是按尺寸从小到大排序的,这个是公式生效的关键哦!
方案1:兼容大部分Excel版本的公式
如果你的Excel是2019及更早版本,用这个公式(假设样本从第2行开始,尺寸列是B2:F2,表头是B1:F1):
在G2单元格输入,然后下拉填充:
=INDEX($B$1:$F$1,MATCH(ROUNDUP(SUM(B2:F2)/2,0),SUMPRODUCT(--(COLUMN(B2:F2)>=COLUMN(B2:F2)),B2:F2),1))
公式拆解:
SUM(B2:F2):计算当前样本的总植株数量ROUNDUP(SUM(B2:F2)/2,0):确定中位数的位置(总数为奇数时取中间值;偶数时取上中位数,若要取下中位数,把ROUNDUP换成ROUNDDOWN即可)SUMPRODUCT(...):生成每个尺寸类别的累积植株数(比如size1的累积是B2,size2是B2+C2,以此类推)INDEX+MATCH:找到第一个累积数≥中位数位置的尺寸类别,就是我们要的中位数类别
方案2:Excel 365/2021专属简洁公式
如果你用的是新版Excel(支持动态数组和LAMBDA函数),这个公式更简洁直观:
=XLOOKUP(ROUNDUP(SUM(B2:F2)/2,0),SCAN(0,B2:F2,LAMBDA(a,b,a+b)),$B$1:$F$1,,1)
公式拆解:
SCAN(0,B2:F2,LAMBDA(a,b,a+b)):动态生成累积植株数的数组,比SUMPRODUCT更易懂XLOOKUP:直接查找中位数位置,匹配第一个≥它的累积值,返回对应的尺寸表头
优化:处理无样本的情况
如果某行样本总植株数为0,公式会返回错误,你可以用IFERROR包装一下:
=IFERROR(INDEX($B$1:$F$1,MATCH(ROUNDUP(SUM(B2:F2)/2,0),SUMPRODUCT(--(COLUMN(B2:F2)>=COLUMN(B2:F2)),B2:F2),1)),"无有效样本")
举个例子,你提到的第7行,假设总植株数的中位数位置落在size1的累积区间里,公式就会准确返回size1,完全符合你的需求!
内容的提问来源于stack exchange,提问作者Harry.Drew
相关产品推荐
相关产品推荐

