Обчисліть умовне середнє значення на розрізнених клітинах


1

Я хотів би знати, чи має calbre libreoffice функціонал для обчислення умовного середнього значення для нерозділених комірок. Прикладом може бути: Обчисліть середнє значення для кожної другої комірки в Row1, якщо Row2 не містить 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 |    |    

Починаючи з C1 результат повинен бути: середній (3, 5, 9) = 5.666666 Починаючи з С2, результат повинен бути: середній (4, 8) = 6

Хоча для кожної комірки є рішення, що використовує висловлювання IF, я хотів би знати, чи є більш сприятливий спосіб це зробити. Я вже шукав таке рішення, як LOOKUP або COUNTIF, але для всіх цих функцій потрібен послідовний діапазон як вхід для даних та стану.

Сподіваюся, хтось може допомогти.

[EDIT]: відповідь

Нарешті я знайшов рішення сам. Asnwer - використовувати SUMPRODUCTфункцію на додаток до іншого рядка або MODфункції:

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


У Excel є функція з назвою "AVERAGEIF", яка може умовно обчислити середнє значення, якщо умови дотримані. Не впевнений, чи є у calc те саме.
Бред Паттон

Я знайшов функцію DAVERAGE, але не можу змусити її працювати належним чином, і проблема з роз'єднаними клітинками залишається ...
wagnerpeer

ДЕВЕРАЖ - це, мабуть, не те, що ви хочете. Я думаю, що вам або потрібно розглянути написання макросу, реорганізувати свої дані, щоб бути разом, або записати формули вручну (тобто (C3 + C5 + C9) / 3).
Бред Паттон

Відповіді:


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 не є «х», а значення в рядку 42 дорівнює 1.

Ви сказали, "якщо Row2 не містить x". Я інтерпретував це так, що означає "якщо відповідне значення у рядку 2 немає x". Якщо ви маєте в виду «якщо відповідне значення в рядку 2 цієї статті не міститьx » (так слова , як «Excel» і «лисиць» також анулює відповідне значення в рядку 1), вам , ймовірно , буде потрібно другий «допоміжний ряд» в впорайтеся з цим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.