excel中的中值IF

excel中的中值IF,excel,median,Excel,Median,寻找条件平均数的类似选项:=AVERAGEIF(A:A,A2,B:B),但这次是excel中的中值。我想为大量受试者在第1列中生成每个ID的中位数 谢谢试试这个公式: =MEDIAN(IF(A:A=A2,B:B)) 这是一个数组公式,这意味着您必须按[code>Ctrl+Shift+enter]来输入它,这只是为了好玩,这里有另一个解决方案,仅用于教育目的 更多的手动操作,但确实避免了CSE数组公式 IF检查我们感兴趣的组中是否有奇数个值,因为奇数与偶数个值的中值计算方式不同 我们可以使用S

寻找条件平均数的类似选项:=AVERAGEIF(A:A,A2,B:B),但这次是excel中的中值。我想为大量受试者在第1列中生成每个ID的中位数

谢谢

试试这个公式:

=MEDIAN(IF(A:A=A2,B:B))

这是一个数组公式,这意味着您必须按[code>Ctrl+Shift+enter]来输入它,这只是为了好玩,这里有另一个解决方案,仅用于教育目的

更多的手动操作,但确实避免了CSE数组公式

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.Salk的答案复杂得多,但我想我还是会分享的。

请考虑接受答案,关闭问题,让其他用户更容易找到。
=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
    )
)