【问题标题】:median IF in excelExcel中的中值IF
【发布时间】:2019-10-14 14:17:59
【问题描述】:

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

谢谢

【问题讨论】:

    标签: excel median


    【解决方案1】:

    试试这个公式:

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

    这是一个数组公式,这意味着您必须按Ctrl + Shift + Enter 输入它。

    【讨论】:

    • 请考虑接受答案,关闭问题并让其他用户更容易找到。
    【解决方案2】:

    只是为了好玩,这是另一种解决方案,仅用于教育目的。

    更多手动,但确实避免了 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 的答案复杂得多,但我想我还是会分享。

    【讨论】:

      猜你喜欢
      • 2011-10-08
      • 2017-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      相关资源
      最近更新 更多