Strona 1 z 1

[Solved]funkcja CZY.PUSTA jako warunek sumowania

: czw mar 10, 2016 11:44 am
autor: kosmal
Chcę sumować wartości jednej kolumny tylko wtedy gdy w innej odpowiednia komórka jest pusta.
Wpisałem =SUMA.JEŻELI(N4:N40;"CZY.PUSTA()=1";D4:D40)
Wyświetlana jest wartość zerowa a w kolumnie N4:N40 występują puste komórki a d4:d40 wypełnione jest liczbami.
Libreoffice nie uruchamia funkcji czy pusta bo dla CZY.PUSTA=1 lub CZY.PUSTA(n4:n40)=1 wynik jest zerowy.
Jak zapisać ten warunek aby sumowanie działało prawidłowo.
Pozdrawiam
Andrzej

Re: funkcja CZY.PUSTA jako warunek sumowania

: czw mar 10, 2016 1:13 pm
autor: Jan_J
Nieee,

Kod: Zaznacz cały

=SUMA.JEŻELI(N4:N40;"CZY.PUSTA()=1";D4:D40)
tak się nie da, bo
  • "czy.pusta()=1" jest tekstem, a nie wywołaniem funkcji. Tym sposobem zsumujesz te wartości z D, przy których w N stoi literalnie rozumiany tekst "CZY.PUSTA()=1";
  • funkcja czy.pusta() musi mieć podany argument w nawiasie;
  • drugi argument sumif-a winien dawać wartość do porównania, a nie być funkcją nakładaną na pierwszy argument, co jest Twoim zamiarem.
Poza tym
  • wyrażenie czy.pusta(cóś)=1 jest równoważne wyrażeniu czy.pusta(cóś), a prościej znaczy lepiej.
Najlepiej zapomnieć o wysokopoziomowych wodotryskach i wrócić do podstaw. Iloczyn skalarny się skłania:

Kod: Zaznacz cały

=SUMA(CZY.PUSTA(N4:N40)*D4:D40)
albo na jedno wychodzi

Kod: Zaznacz cały

=SUMA.ILOCZYNÓW(CZY.PUSTA(N4:N40);D4:D40)
Pierwsza formuła mnoży każdy wyraz z D przez wartość logiczną stwierdzenia, że odpowiednia komórka w N jest pusta, po czym sumuje wyniki. Druga przygotowuje dwa ciągi: zerojedynkowy z testów pustości N oraz liczbowy z D i sumuje ich iloczyny. Oba wykorzystują fakt, że 1*wartość nie zmienia wartości, zaś 0*wartość daje zero; zatem suma warunkowa ciągu wartości da ten sam wynik, co suma iloczynów indykatora warunku przez odpowiadającą mu wartość.

Obie formuły korzystają z wektorowego rozszerzenia składni formuł. Zatem powinny być zatwierdzane przez <Ctrl+Shift+Enter>, ale z niejasnych dla mnie powodów w drugiej wystarczy samo <Enter>. Ot, uświęcona praktyką niekonsekwencja twórców arkuszy kalkulacyjnych.

SUMIF-em też się da, choć wcale nie okazuje się prościej:

Kod: Zaznacz cały

=SUMA.JEŻELI(CZY.PUSTA(N4:N40);1;D4:D40)
z obowiązkowym <Ctrl+Shift+Enter>.