1

Я хотел бы знать, имеет ли libreoffice calc функциональность для вычисления условного среднего по непересекающимся ячейкам. Примером может быть: Рассчитать среднее значение для каждой второй ячейки в строке 1, если строка 2 не содержит x.

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

Начиная с С1, результат должен быть: среднее (3, 5, 9) = 5,666666 Начиная с С2, результат должен быть: среднее (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")

2 ответа2

2

Я наконец нашел решение самостоятельно. Ответ заключается в использовании функции SUMPRODUCT в дополнение к другой строке или функции MOD:

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

У меня нет немедленного доступа к LibreOffice Calc.  Вы можете сделать это в Microsoft Excel, используя функцию AVERAGEIFS и «строку помощника».  Я выбрал Ряд 42.  В ячейке A42 введите =MOD(COLUMN(), 2) , затем перетащите / заполните его до I42 (т. Е. Достаточно далеко, чтобы соответствовать всем вашим данным; в вашем примере вы видите девять столбцов).  Это должно дать вам чередующуюся последовательность 1 , 0 , 1 , 0 , ... Тогда ответ, который вы хотите, это

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

то есть среднее значение в пределах A1:I1 для которого значение в строке 2 не равно «x», а значение в строке 42 равно 1.

Вы сказали «если Row2 не содержит х».  Я интерпретировал это как «если соответствующее значение в строке 2 не равно x ».  Если вы имеете в виду «если соответствующее значение в строке 2 не содержит x » (поэтому такие слова, как «excel» и «fox» также аннулируют соответствующее значение в строке 1), вам, вероятно, понадобится вторая «вспомогательная строка» справиться с этим.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .