【问题标题】:Average of top 4 numbers greater than 0 Microsoft Excel大于 0 的前 4 个数字的平均值 Microsoft Excel
【发布时间】:2018-12-10 18:37:53
【问题描述】:

我很难找到一个公式来查找一行中的前 4 个都大于 0 的数字,如果小于 4 个大于 0 的数字,它会找到这些数字的平均值。 示例:

 A B C D E F G H    
 1 2 0 0 4 0 0 0 

我希望公式看到只有 3 个大于 0 的数字,并在不考虑任何 0 的情况下找到这 3 个数字的平均值。 我认为=average(large(isnumber(A1:H1),{1,2,3,4}) 会起作用,但事实并非如此。任何帮助将不胜感激。

【问题讨论】:

  • 您对使用的 excel 版本有限制吗?使用AVERAGEIFAVERAGEIFS 函数可以使这类事情变得更容易。
  • @DavidS 据我所知,没有可靠的方法可以将平均值限制为不是0 的前 4 个值,AVERAGEIFAVERAGEIFS。如果有,请用一个工作示例回答问题。今天我很想学点新东西。
  • @ScottCraner 您的回答似乎是最好的。使用 SUMPRODUCT 可以避免使用数组函数,但是使用 sum/count 方法会增加很多错误的可能性。我不认为我会找到更好的选择。
  • @DavidS SUMPRODUCT 是一个数组公式。它是原生数组公式,因此不需要 Ctrl-Shift-Enter,但它仍然是一个数组公式。

标签: excel excel-formula average


【解决方案1】:

使用这个数组公式:

=AVERAGE(LARGE($A1:$H1,ROW($A$1:INDEX($A:$A,MIN(COUNTIF($A1:$H1,">0"),4)))))

ROW($A$1:INDEX($A:$A,MIN(COUNTIF($A1:$H1,">0"),4)) 将创建一个数组,该数组包含 1 到大于 04 的单元格数量中最少的那个。

作为数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 确认,而不是 Enter。

【讨论】:

    【解决方案2】:

    使用来自另一个答案的样本数据,这会产生相同的结果。

    =AVERAGEIFS(A1:H1, A1:H1, ">="&IFERROR(AGGREGATE(14, 7, A1:H1/(A1:H1>0), 4), AGGREGATE(15, 7, A1:H1/(A1:H1>0), 1)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      相关资源
      最近更新 更多