如果有人能建议一个 Excel 公式来计算前 9 个带有数字的单元格中最低 4 个单元格的平均值,我将不胜感激。
这是该行中的数据。范围是A1:O1。
我正在寻找一个公式,该公式将识别前 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/