zliczanie w wierszu tylko komórek o liczb wiekszych od zera

Nie wiesz, gdzie umieścić swój post? Pisz tutaj!
Antek
Posty: 12
Rejestracja: śr sie 21, 2013 1:24 pm

zliczanie w wierszu tylko komórek o liczb wiekszych od zera

Post autor: Antek »

Witam,
Czy ktoś mógłby podać mi formułę do sumowania komórek w wierszu o zawartości liczb tylko większych od zera jako 1,2,3...itd.
Inaczej mówiąc jeśli w danej komórce znajdzie się liczba większa od zera to skrajna prawa komórka wiersza powinna wskazać "1"
jeśli w wierszu znajdą się się dwie komórki o liczbie większej od zera to wynik powinien być "2" itd. Komórki o zawartości liczb
równej zero nie powinny być uwzględniane w wyniku
Ostatnio zmieniony wt sie 27, 2013 4:47 pm przez Jan_J, łącznie zmieniany 1 raz.
Powód: zmiana tytułu postu
Openoffice 2.4 , vista
Minio
Posty: 323
Rejestracja: śr sie 01, 2012 1:48 am
Lokalizacja: (Poznań|Dziwnów), Polska

Re: sumowanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Minio »

Poczytaj o funkcji LICZ.JEŻELI
Mój blog o używaniu LibreOffice
LibreOffice 4.2.6, Debian testing amd64
Jan_J
Posty: 4654
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: sumowanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Jan_J »

Antek pisze:[...]formułę do sumowania komórek [...]
Inaczej mówiąc jeśli w danej komórce znajdzie się liczba większa od zera to skrajna prawa komórka wiersza powinna wskazać "1"
jeśli w wierszu znajdą się się dwie komórki o liczbie większej od zera to wynik powinien być "2" itd. [...]
Ad vocem w sprawie terminologii:
Jeżeli mamy ciąg liczb, dla przykładu 1, 3, 2, 7, -4, 0, 12, -1, 6, to
* suma jego dodatnich elementów wynosi 31,
* liczba jego dodatnich elementów wynosi 5.
Proces sumowania wyznacza sumę elementów. Proces zliczania wyznacza liczbę elementów.
Zatem zwrot "inaczej mówiąc" jest nieuprawniony. Chodzi Ci o zliczanie. Zmieniam temat wątku.
Wskazówka Minia powinna rozwiązać Twój problem. Btw. istnieje również analogiczna funkcja SUMA.JEŻELI().
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Antek
Posty: 12
Rejestracja: śr sie 21, 2013 1:24 pm

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Antek »

dziękuję za odpowiedź,ale poza poznaniem nomenklatury w niczym mi to nie pomogło.
Wpisałem =LICZ.JEŻELI(E2;H2;K2;N2;Q2;T2;W2;Z2">0") i pojawił się błąd "509".
Nie wiem co on oznacza. Jak pisałem wcześniej jestem laikiem.
Potrzebna mi raczej konkretna wskazówka do stworzenia potrzebnego mi narzędzia,
niż spis literatury. Mam 53 lata i życia mi nie starczy by zgłębić to co pisze Minio na swoim blogu
Openoffice 2.4 , vista
Minio
Posty: 323
Rejestracja: śr sie 01, 2012 1:48 am
Lokalizacja: (Poznań|Dziwnów), Polska

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Minio »

Antek pisze:Wpisałem =LICZ.JEŻELI(E2;H2;K2;N2;Q2;T2;W2;Z2">0") i pojawił się błąd "509".
Nie wiem co on oznacza. Jak pisałem wcześniej jestem laikiem.
Błąd 509 oznacza brak operatora w formule. W tym konkretnym przypadku chodzi o brak średnika pomiędzy Z2 a ">0".

Ale jego dodanie i tak nic nie zmieni, ponieważ LICZ.JEŻELI oczekuje dwóch argumentów, a tutaj jest ich aż 9.
Musiałbyś to zapisać jako:

Kod: Zaznacz cały

=LICZ.JEŻELI(E2:Z2;">0")
Tylko wtedy pojawi się kolejny problem — obejmiesz wszystkie kolumny od E do Z, podczas gdy chcesz uwzględnić co trzecią z nich. Liczby większe od zera w komórkach F2 i O2 spowodują otrzymanie zawyżonego, błędnego wyniku.

Więc tak naprawdę musisz policzyć wszystkie liczby z zakresu, które spełniają oba kryteria:
- liczba jest w „odpowiedniej” kolumnie (E, H, K itd.)
- liczba jest większa od zera

Drugi warunek mamy już opanowany. Z kolei pierwszy możemy sprawdzić przy pomocy funkcji KOLUMNA oraz MOD. Pierwsza z nich zwraca liczbową wartość kolumny, w której znajduje się komórka określona za pomocą argumentu (czyli A zamienia na 1, B na 2 itd.). Druga służy do obliczania reszty z dzielenia. Komórka E2 znajduje się w piątej kolumnie; 5/3 to 1 i 2 reszty. Komórka H2 znajduje się w ósmej kolumnie; 8/3 to 2 i 2 reszty. Komórka K2 znajduje się w 11 kolumnie; 11/3 to 3 i 2 reszty. Komórka… Chyba już widzisz zależność?

Teraz pozostaje nam już tylko ująć oba te warunki w formułę. Niestety, nie możemy do tego wykorzystać LICZ.JEŻELI. Potrzebna by nam była LICZ.WARUNKI, ale ona z kolei nie jest dostępna w tej wersji pakietu, której używasz.
Pozostaje więc nadużycie funkcji SUMA.ILOCZYNÓW lub skorzystanie z formuły macierzowej.

Gotowa formuła wygląda następująco:

Kod: Zaznacz cały

=SUMA.ILOCZYNÓW((MOD(KOLUMNA(E2:Z2);3)=2)*(E2:Z2>0))
Opis jej działania (oraz inne sposobów rozwiązania tego problemu) znajduje się w artykule Funkcja SUMA.JEŻELI i kilka warunków.
Mój blog o używaniu LibreOffice
LibreOffice 4.2.6, Debian testing amd64
Jan_J
Posty: 4654
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Jan_J »

JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Antek
Posty: 12
Rejestracja: śr sie 21, 2013 1:24 pm

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Antek »

Dziękuje bardzo. Pojawił się wynik, jednak wskazuje liczbę wszystkich komórek tzn. 8
Myślę,że to dlatego iż nie wspomniałem o tym, że komórki brane pod uwagę zawierają ilość
przepracowanych godzin np. 8:00 lub 0:00, ale żadna nie jest pusta. Czy to możliwe? Jak to naprawić?
Openoffice 2.4 , vista
Jan_J
Posty: 4654
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Jan_J »

Wartość 0, podobnie jak pusta komórka, nie powinny być zliczane przy warunku ">0".
Albo coś masz namieszane w formule, albo w danych.
Np.: któreś "0" jest tekstem, albo wyświetlane 00:00 odpowiada nie zeru, tylko pełnej dobie.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Minio
Posty: 323
Rejestracja: śr sie 01, 2012 1:48 am
Lokalizacja: (Poznań|Dziwnów), Polska

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Minio »

Antek pisze:Myślę,że to dlatego iż nie wspomniałem o tym, że komórki brane pod uwagę zawierają ilość
przepracowanych godzin np. 8:00 lub 0:00, ale żadna nie jest pusta. Czy to możliwe? Jak to naprawić?
Czy możesz wgrać tutaj na forum uproszczoną wersję arkusza, z którym pracujesz? Wystarczą nam 2-3 wiersze danych. Usuń wszelkie dane, które mogłyby posłużyć do zidentyfikowania konkretnych ludzi, których dotyczy arkusz.
W ten sposób będzie nam łatwiej sprawdzić, o co chodzi.
Mój blog o używaniu LibreOffice
LibreOffice 4.2.6, Debian testing amd64
Antek
Posty: 12
Rejestracja: śr sie 21, 2013 1:24 pm

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Antek »

Oczywiście. Bardzo proszę. Jest to grafik czasu pracy pracowników.
Chciałbym stworzyć go od września tego roku do grudnia przyszłego.
Niebawem otwieram sklep a jestem z tym "w lesie"
Może przy okazji podpowiedzielibyście jak skopiować gotowy arkusz do kolejnych
miesięcy z uwzględnieniem kalendarza i kolorów sobót i niedziel wraz z formułami
oraz tabelką dni urlopów, zwolnień itp./ rozpoczęte na dolnej stronie grafiku /
Te dane z tabel miesięcznych powinny sumować się w tabeli rocznej np. w 13 arkuszu
i pokazywać dane dla każdego pracownika oddzielnie tzn. ile było wykorzystanego urlopu
wypoczynkowego, zwolnień lekarskich itp. Będę wdzięczny za pomoc
Załączniki
GRAFIK.ods
(28.9 KiB) Pobrany 576 razy
Openoffice 2.4 , vista
Minio
Posty: 323
Rejestracja: śr sie 01, 2012 1:48 am
Lokalizacja: (Poznań|Dziwnów), Polska

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Minio »

Z jakiegoś powodu formuła nie jest dokładnie taka, jak ta, którą podałem w jednej ze wcześniejszych wiadomości — brakuje nawiasów obejmujących pierwszy człon wyrażenia (od MOD do =2).
W rezultacie zamiast dwóch równoprawnych wyrażeń warunkowych mieliśmy jedno podrzędne względem drugiego. Dokładniej: formuła sprawdzała, czy liczba w komórce jest większa od zera, wynik mnożyła przez dwa (wartość logiczna dla arkusza jest liczbą, gdzie zero oznacza FAŁSZ a wszystko inne PRAWDA) i wreszcie tę wartość porównywała z resztą z dzielenia numeru porządkowego kolumny przez trzy.
Ostatecznie funkcja zwróciła PRAWDA w dwóch sytuacjach:
- gdy numer porządkowy był podzielny przez 3 bez reszty oraz zawartość komórki nie była większa od zera (dwa razy 0 to 0; reszta z dzielenia liczby podzielnej przez 3 to 0; ponieważ 0 równa się 0, warunek został spełniony)
- gdy numer porządkowy był podzielny przez 3 z resztą dwa oraz zawartość komórki była większa od zera (dwa razy 1 to 2; reszta z dzielenia w tym wypadku wynosi 2; ponieważ 2 równa się 2, warunek został spełniony).

Ponieważ wszystkie zestawy komórek w Twoich danych albo spełniały oba te warunki jednocześnie, albo nie spełniały żadnego z nich, efektem działania całej formuły była liczba dwukrotnie większa od pożądanej.

Więc jeszcze raz, poprawna formuła. Skopiuj ją i wklej do komórki AA2:

Kod: Zaznacz cały

=SUMA.ILOCZYNÓW((MOD(KOLUMNA(E2:Z2);3)=2)*(E2:Z2>0))
Nawiasem mówiąc mam nieodparte wrażenie, że taką bazę danych można zaprojektować inaczej (w domyśle: lepiej z punktu widzenia zadań, które będziesz wobec niej stawiać). Ale ponieważ nie mam na razie czasu nad tym pomyśleć, niech zostanie tak jak jest.
Mój blog o używaniu LibreOffice
LibreOffice 4.2.6, Debian testing amd64
Antek
Posty: 12
Rejestracja: śr sie 21, 2013 1:24 pm

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Antek »

Minio jesteś genialny. Serdecznie dziękuję. Sam bym sobie z tym nie poradził.
Szkoda, że nie masz czasu. Obawiam się, że z wymienionymi wyżej problemami będzie mi równie ciężko.
W każdym razie jeszcze raz bardzo Ci dziękuję

SOLVED
Openoffice 2.4 , vista
alf_w
Posty: 1
Rejestracja: pn paź 13, 2014 7:54 pm

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: alf_w »

moglibyście podać jakąś wskazówkę przy następującej formule?

próbuje na wszystkie sposoby i nic a przydałoby mi się to żeby zadziałało

JEŻELI(O2=L2;">0") wyskakuje błąd
LICZ.JEŻELI(O2=L2;">0") wyskakuje błąd

chodzi mi tylko o to żeby dajmy na to w komórce L2 program pokazywał to samo co jest dajmy na to w komórce O2 ale pod warunkiem że cyfry które tam są są cyframi dodatnimi, ujemnych nie chcę widzieć

dzięki
OpenOffice 4.1.1 na Windows 8.1
Jan_J
Posty: 4654
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: zliczanie w wierszu tylko komórek o liczb wiekszych od z

Post autor: Jan_J »

alf_w pisze: JEŻELI(O2=L2;">0") wyskakuje błąd
Nie powinna pokazywać błędu. Formuła

Kod: Zaznacz cały

JEŻELI(O2=L2;">0")
znaczy:
Weź O2 i L2 i porównaj je ze sobą. Jeśli wyjdzie to samo, do komórki z formułą wpisz tekst ">0". Jeśli wyjdzie co innego, do komórki z formułą wpisz wynik porównania (czyli FAŁSZ). Błąd możesz dostać tylko wtedy, kiedy jedna z komórek O2, L2 zawiera błąd. Albo, kiedy umieścisz formułę w jednej z analizowanych komórek -- tj. L2 albo O2.
alf_w pisze: LICZ.JEŻELI(O2=L2;">0") wyskakuje błąd
Bez sensu, bo nie masz zakresu w którym należałoby zliczać. Sprawdź składnię i znaczenie argumentów funkcji licz.jeżeli().
alf_w pisze: chodzi mi tylko o to żeby dajmy na to w komórce L2 program pokazywał to samo co jest dajmy na to w komórce O2 ale pod warunkiem że cyfry które tam są są cyframi dodatnimi, ujemnych nie chcę widzieć.
Nie ma cyfr dodatnich, są liczby dodatnie.
Musisz w L2 wpisać formułę, która przeanalizuje zawartość O2, porównując ją z wartością 0, a jeśli liczba okaże się większa, poda ją jako wynik. W przeciwnym razie wynikiem jest pusty tekst (pustej komórki nie da się opisać formułą). Czyli L2:

Kod: Zaznacz cały

=jeżeli(O2>0; O2; "")
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ