excel - 动态平均值前 9 个整数中最低的 4 个

标签 excel

如果有人能建议一个 Excel 公式来计算前 9 个带有数字的单元格中最低 4 个单元格的平均值,我将不胜感激。

这是该行中的数据。范围是A1:O1。

> 4,4,2,7,[BLANK],6,12,3,[BLANK],15,1,7,9,[BLANK],7

我正在寻找一个公式,该公式将识别前 9 个带有数字 (4,4,2,7,6,12,3,15,1) 的单元格,然后对最低的 4 个单元格求平均值。

我的公式是

=AVERAGE(SMALL((OFFSET(A1,0,0,1,9),{1,2,3,4})))

不起作用,因为它计算空白单元格。我想要 1,2,3,4 的平均值,等于 2.5。

最佳答案

您可以使用 AGGREGATE 函数,该函数具有忽略错误的选项:

=AVERAGE(SMALL(INDEX(myRange,,AGGREGATE(15,6,COLUMN(myRange))/ISNUMBER(myRange),{1,2,3,4,5,6,7,8,9 })),{1,2,3,4}))

  • COLUMN(myRange)/ISNUMBER(myRange) 返回错误数组或列号
  • =INDEX(myRange,,AGGREGATE(15,6,COLUMN(myRange)/ISNUMBER(myRange),{1,2,3,4,5,6,7,8,9})) 返回包含数字的前九 (9) 个单元格的内容。
  • SMALL(INDEX(myRange,,AGGREGATE(15,6,COLUMN(myRange)/ISNUMBER(myRange),{1,2,3,4,5,6,7,8,9})) ,{1,2,3,4}) 返回四 (4) 个最小值

然后对它们进行平均

如果您的 Excel O365 具有 FILTER 函数,则可以使用该函数而不是 AGGREGATE 来消除非数字值。 (并且还对数组常量使用 SEQUENCE 函数)。

=AVERAGE(SMALL(INDEX(FILTER(myRange,ISNUMBER(myRange)),0,SEQUENCE(9)),SEQUENCE(4)))

编辑

以上公式假设 myRange 从 A 列开始。如果不是,并且您使用的是 INDEX(...AGGREGATE(... 方法,然后我们需要从索引列数组中减去 myRange 的起始列(减 1),以便正确索引到数组中。

INDEX(COLUMN(myRange),1)-1

例如:

=AVERAGE(SMALL(INDEX(myRange,,AGGREGATE(15,6,COLUMN(myRange)/ISNUMBER(myRange),{1,2,3,4,5,6,7,8,9})-INDEX(COLUMN(myRange),1)+1),{1,2,3,4}))

如果您使用 O365 方法,则没有必要。

关于excel - 动态平均值前 9 个整数中最低的 4 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63351315/

相关文章:

vba - 运行时错误 13 : Type mismatch

excel - 从 Word 中复制并粘贴为图片命名的 Excel 范围

excel - excel中忽略NA值的平均值

PHPExcel 将 48 行中的 38 行从 xlsx 文件插入 MySQL

excel - 将日期从 Excel 文件转换为 pandas

excel - 将 A 列数据的行连接到第一行 B 列的单个单元格时面临的问题

excel - 简化拖动 Excel 公式

vba - 在 VBA 中关闭/释放 Word 对象?

excel - 从 Excel 中执行 HTTP Post 并解析结果

excel - 如何使用 vba 代码关闭 Visual Basic 应用程序