如何在Google Sheets中按性别返回接近年龄均值或中位数的数值
在Google Sheets中按性别分组获取接近平均值/中位数的年龄值
准备工作
假设原始数据位于A1:C9(表头在第1行,数据从第2行开始)。
方法一:获取接近平均值的年龄值
- 生成唯一性别列表:在空白单元格(比如E2)输入公式,提取不重复的性别:
=UNIQUE(A2:A9) - 计算每组的平均年龄:在F2单元格输入公式,对应E列的性别计算平均年龄(保留两位小数):
下拉填充公式到所有性别行。=ROUND(AVERAGEIF(A:A, E2, C:C), 2) - 找到最接近平均值的年龄:在G2单元格输入公式,匹配当前性别下,与平均值差值最小的年龄:
下拉填充公式到所有性别行。若有多个年龄与平均值差值相同,公式会返回最先出现的那个值。=XLOOKUP(MIN(ABS(FILTER(C:C, A:A=E2)-F2)), ABS(FILTER(C:C, A:A=E2)-F2), FILTER(C:C, A:A=E2),,0,1)
方法二:获取接近中位数的年龄值
- 计算每组的中位数:把F列的平均值公式替换为中位数公式:
=MEDIANIF(A:A, E2, C:C) - 找到最接近中位数的年龄:G列的公式直接复用,只需将F2换成中位数所在单元格即可:
=XLOOKUP(MIN(ABS(FILTER(C:C, A:A=E2)-F2)), ABS(FILTER(C:C, A:A=E2)-F2), FILTER(C:C, A:A=E2),,0,1)
一键生成结果(数组公式)
如果不想手动下拉填充,可在E2单元格输入以下数组公式,一次性生成性别、平均年龄、最接近平均值的年龄三列结果:
=BYROW(UNIQUE(A2:A9), LAMBDA(g, {g, ROUND(AVERAGEIF(A:A, g, C:C),2), XLOOKUP(MIN(ABS(FILTER(C:C,A:A=g)-AVERAGEIF(A:A,g,C:C))), ABS(FILTER(C:C,A:A=g)-AVERAGEIF(A:A,g,C:C)), FILTER(C:C,A:A=g),,0,1)}))
内容的提问来源于stack exchange,提问作者Kalyan Roy
相关产品推荐
相关产品推荐

