You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多分类场景下不使用数据透视表计算各分类中位数的公式问题

按分类计算中位数的公式问题

我有一个包含**Categories(分类)和Values(数值)**列的表格,需要计算每个分类对应的中位数。尝试使用MEDIAN+IF组合公式,仅2个分类时有效,但3个分类(如下表数据)时失效。约束条件为不能使用数据透视表,我尝试的公式为:
=IF(A2:A11="a",MEDIAN(B2:B11),IF(A2:A11="b",MEDIAN(B2:B11),IF(A2:A11="c",MEDIAN(B2:B11))))
用数据透视表添加度量值可实现需求,但不清楚当前公式的问题所在。

表格数据

CategoriesValues
a5
b4
c9
c10
b6
a2
c11
b7
a3
b8

问题分析

你的公式存在两个核心问题:

  1. MEDIAN(B2:B11)计算的是整个数值列的中位数,而非当前分类对应子集的中位数;
  2. 嵌套IF的逻辑错误,它没有筛选出对应分类的数值再计算,而是直接返回全列中位数,且数组场景下逻辑混乱。

正确解法

使用数组公式(Excel旧版本按Ctrl+Shift+Enter确认,365/2021及以上版本直接回车即可),通过IF筛选对应分类的数值后再计算中位数:

单个分类的中位数计算

  • 分类a的中位数:=MEDIAN(IF(A2:A11="a", B2:B11))
  • 分类b的中位数:=MEDIAN(IF(A2:A11="b", B2:B11))
  • 分类c的中位数:=MEDIAN(IF(A2:A11="c", B2:B11))

自动匹配每行分类的中位数

如果要在表格每行自动显示对应分类的中位数,使用绝对引用锁定数据范围:
=MEDIAN(IF($A$2:$A$11=A2, $B$2:$B$11))

公式原理

IF(A2:A11="a", B2:B11)会生成一个数组:仅保留分类为a的数值,其他位置返回FALSE;MEDIAN函数会自动忽略FALSE值,仅计算有效数值的中位数。


内容的提问来源于stack exchange,提问作者Deepu Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 01:40:20