【发布时间】:2019-10-14 14:17:59
【问题描述】:
寻找条件平均值的类似选项:=AVERAGEIF(A:A,A2,B:B) 但这次是 Excel 中的中值。我想在第 1 列中为大量主题生成每个 ID 的中位数
谢谢
【问题讨论】:
寻找条件平均值的类似选项:=AVERAGEIF(A:A,A2,B:B) 但这次是 Excel 中的中值。我想在第 1 列中为大量主题生成每个 ID 的中位数
谢谢
【问题讨论】:
试试这个公式:
=MEDIAN(IF(A:A=A2,B:B))
这是一个数组公式,这意味着您必须按Ctrl + Shift + Enter 输入它。
【讨论】:
只是为了好玩,这是另一种解决方案,仅用于教育目的。
更多手动,但确实避免了 CSE 数组公式。
=IF(
ISODD(COUNTIFS($A$2:$A$9,$D2)),
SUMPRODUCT(
SMALL($B$2:$B$9*($A$2:$A$9=$D2), (COUNT($B$2:$B$9)-COUNTIFS($A$2:$A$9,$D2))+(COUNTIFS($A$2:$A$9,$D2)+1)/2)
),
SUMPRODUCT(
(
SMALL($B$2:$B$9*($A$2:$A$9=$D2), (COUNT($B$2:$B$9)-COUNTIFS($A$2:$A$9,$D2))+(COUNTIFS($A$2:$A$9,$D2)/2))
+
SMALL($B$2:$B$9*($A$2:$A$9=$D2), (COUNT($B$2:$B$9)-COUNTIFS($A$2:$A$9,$D2))+(COUNTIFS($A$2:$A$9,$D2)/2)+1)
)/2
)
)
IF 检查我们感兴趣的组中是否有奇数个值,因为奇数和偶数值的中位数计算方式不同。
我们可以使用SMALL 找到第n 个最小的数。我们可以使用$B$2:$B$9*($A$2:$A$9=$D2) 将我们不感兴趣的组中的所有值设置为零。
要获取值的计数,而不是我们感兴趣的组,我们可以使用COUNT($B$2:$B$9)-COUNTIFS($A$2:$A$9,$D2)。
我们只需要在我们感兴趣的组中添加一半的值:COUNTIFS($A$2:$A$9,$D2)/2。
如果我们感兴趣的组中有奇数个值,那我们就完成了。但是,如果有偶数个值,我们必须取中间两个数字的平均值。这是通过将这个 SMALL 公式添加到另一个 SMALL 公式和 n+1:(COUNTIFS($A$2:$A$9,$D2)/2)+1 并除以 2 来完成的。
因为我们处理的是数组,所以需要将这些公式包装在SUMPRODUCTS中。
正如我所说,您可能不值得使用此解决方案,因为它比 M.Schalk 的答案复杂得多,但我想我还是会分享。
【讨论】: