如何计算一行 22 个数字中最后 6 个数字中最低 3 个的平均值?有些单元格可能为空白

如何计算一行 22 个数字中最后 6 个数字中最低 3 个的平均值?有些单元格可能为空白

如何自动计算一行 22 个数字中最后 6 个数字中最低的 3 个数字的平均值,每周增加一个数字?显然,我需要至少 7 个数字才能开始使用此公式。此外,某些行中的某些单元格可能为空白。

答案1

使用此公式的辅助列

=如果(A2,ROW(),0)

抄下来。

然后使用这个数组公式,确认Ctrl- Shift-Enter

=AVERAGE(SMALL(IF((A2:A15<>0)*(B2:B15=LARGE(B2:B15,{1,2,3,4,5,6})),A2:A15),{1,2,3}))

在此处输入图片描述

Large 函数确定 B 列中最大的六个数字。If 函数返回 A 列中的相应数字。Small 函数返回该集合中最小的三个数字。Average 函数计算这些数字的平均值。

这就是它在 Excel 中的工作方式。不确定 LibreOffice Calc 是否如此。

编辑:这是一个无需辅助列即可工作的变体:

=AVERAGE(SMALL(IF((A2:A15<>0)*(IF(ISNUMBER(A2:A15),ROW(A2:A15))=LARGE(IF(ISNUMBER(A2:A15),ROW(A2:A15)),{1,2,3,4,5,6})),A2:A15),{1,2,3}))

还确认了Ctrl——ShiftEnter

答案2

一种方法是使用“small”函数。我不确定您是否可以同时返回三个最低值,但您可以使用三个具有不同“small”“等级”的单元格,然后取它们的平均值:

[Let's say you have a column of numerical data B3:B80...]
[Sample data from B column: 19, 23, 23, 24, 24, 27, 27, 27, 28, 29, 29, 29...]

[cell on left, cell contents in quotes, output on right of =>]

   C3 '=SMALL(B3:B80;3)' => 23 (third lowest number)
   C4 '=SMALL(B3:B80;2)' => 23 (second lowest number)
   C5 '=SMALL(B3:B80;1)' => 19 (first lowest number; you could also used "MIN")
   C6 '=AVERAGE(C3:C5)' => 21.67

答案3

我意识到这不是一个切实可行的答案,但也许有人可以清理它(也许用一个聪明的数组公式?):

=如果(COUNT(B75:B80)=6, AVERAGE(小(B75:B80,1),小(B75:B80,2),小(B75:B80,3)),
 如果 (计数 (B74:B80)=6, 平均值 (小 (B74:B80,1),小 (B74:B80,2),小 (B74:B80,3)),
 如果 (计数 (B73:B80)=6, 平均值 (小 (B73:B80,1),小 (B73:B80,2),小 (B73:B80,3)),
 如果 (计数 (B72:B80)=6, 平均值 (小 (B72:B80,1),小 (B72:B80,2),小 (B72:B80,3)),
    ...))))))))

相关内容