计算不相交单元格的条件平均值

计算不相交单元格的条件平均值

我想知道 libreoffice calc 是否具有计算不相交单元格的条件平均值的功能。例如:如果 Row2 不包含 x,则计算 Row1 中每个第二个单元格的平均值。

     | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9
--------------------------------------------------
Row1 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9
Row2 |  x |  x |    |    |    |  x |  x |    |    

从 C1 开始,结果应该是:mean(3, 5, 9) = 5.666666 从 C2 开始,结果应该是:mean(4, 8) = 6

虽然有一个使用 IF 语句对每个单元格进行处理的解决方案,但我想知道是否有更方便的方法。我已经搜索了类似 LOOKUP 或 COUNTIF 的解决方案,但所有这些函数都需要一个连续的范围作为数据和条件的输入。

我希望有人能帮帮忙。

[编辑]:回答

我终于自己找到了解决方案。答案是SUMPRODUCT除了另一行或MOD函数之外还使用该函数:

=SUMPRODUCT(MOD(COLUMN(C1:C9), 2)=0, C1Row2:C9Row2<>"x", C1Row1:C9Row1)/SUMPRODUCT(MOD(COLUMN(C1:C9), 2)=0, C1Row2:C9Row2<>"x")

答案1

我终于自己找到了解决方案。答案是除了另一行或 MOD 函数之外还使用 SUMPRODUCT 函数:

=SUMPRODUCT(MOD(COLUMN(C1:C9), 2)=0, C1Row2:C9Row2<>"x", C1Row1:C9Row1)/SUMPRODUCT(MOD(COLUMN(C1:C9), 2)=0, C1Row2:C9Row2<>"x")

答案2

我无法立即访问 LibreOffice Calc。您可以使用函数AVERAGEIFS和“辅助行”在 Microsoft Excel 中执行此操作。我选择了第 42 行。在单元格中A42,输入=MOD(COLUMN(), 2),然后将其拖出/填写到(即,足够远以对应您的所有数据;在您的示例中,您显示了九I42 列)。这应该会给您一个交替的序列1,,,,, …0然后您想要的答案是10

=AVERAGEIFS(A1:I1, A2:I2, "<>x", A42:I42, 1)

A1:I1即第 2 行的值不是“x”且第 42 行的值为 1 的数值的平均值。

你说的是“如果第 2 行不包含 x”。我将其解释为“如果第 2 行中的对应值不x”。如果你的意思是“如果第 2 行中的对应值不包含an x”(因此像“excel”和“fox”这样的词也会使第 1 行中的相应值无效),您可能需要第二个“辅助行”来处理这个问题。

相关内容