【问题标题】:Excel: Average the largest (or smallest) N values in a range, excluding zerosExcel:平均一个范围内最大(或最小)的N个值,不包括零
【发布时间】:2017-01-15 00:08:02
【问题描述】:

我正在尝试平均一个非零范围内的最大(或最小)N 值。假设我的数据在 A 列,我正在使用这个公式:

=AVERAGE(SMALL(A:A,{1,2,3}))

平均 A 中的三个最小值。类似的公式可以使用LARGE 代替SMALL,以获得最大值。如何调整公式以找到非零的最小(最大)N 值,并仅平均这些值?我可能不得不玩数组公式,IFs"<>0",但我对 excel 语法不是很熟悉。

非常感谢!

【问题讨论】:

    标签: excel conditional average


    【解决方案1】:

    如果所有数字都为零或更大,请检查为零的值的数量,并在它们上方开始您的SMALL

    =AVERAGE(SMALL(myRange,{1,2,3}+COUNTIF(myRange,0)))
    

    如果某些值可能小于零,则

    =AVERAGE(SMALL(IF(A:A<>0,A:A),{1,2,3}))
    

    在点击ENTER的同时按住CTRL + SHIFT作为数组公式输入。

    【讨论】:

    • 谢谢!我刚刚测试了您提出的公式,它们都运行良好,除了在(真正的临界)情况下,当有少于 3 个非零时。在这种情况下,公式会返回错误。我修复了这个连接IFERRORs,并逐步检查最佳 2 或单个最佳非零值,如果一切都失败,则使用最终虚拟值。它看起来有点不雅,但有效。有替代品吗? =IFERROR(AVERAGE(SMALL(A:A,{1,2,3}+COUNTIF(A:A,0))), IFERROR(AVERAGE(SMALL(A:A,{1,2}+COUNTIF(A:A,0))), IFERROR(AVERAGE(SMALL(A:A,{1}+COUNTIF(A:A,0))), MAX(A:A))))
    • 如果这是你需要测试的东西,你可以试试用ctrl+shift+enter输入这个公式:=IFERROR(AVERAGE(SMALL(IF(A:A&lt;&gt;0,A:A),ROW(INDIRECT("1:"&amp;MIN(3,COUNTIFS(A:A,"&lt;&gt;0",A:A,"&lt;&gt;")))))),"no non-zero entries")我不知道哪个更有效,但是这个是易失性的,意味着它可能效率较低,但如果您希望的平均数会有所不同,则更容易概括。
    猜你喜欢
    • 2021-01-25
    • 2013-03-26
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2020-11-25
    • 1970-01-01
    • 2014-11-14
    相关资源
    最近更新 更多