[Solved]funkcja CZY.PUSTA jako warunek sumowania

Użytkowanie arkusza kalkulacyjnego
kosmal
Posty: 52
Rejestracja: pt sie 28, 2009 9:27 am

[Solved]funkcja CZY.PUSTA jako warunek sumowania

Post 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
Ostatnio zmieniony czw mar 10, 2016 2:35 pm przez kosmal, łącznie zmieniany 1 raz.
LibreOffice 6.3.1.2 Debian buster, Windows 10
Jan_J
Posty: 4570
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: funkcja CZY.PUSTA jako warunek sumowania

Post 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>.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ