suma jeśli trzecie miejsce po przecinku ma wartość

Użytkowanie arkusza kalkulacyjnego
dentopolis
Posty: 224
Rejestracja: pn wrz 23, 2013 2:48 pm

suma jeśli trzecie miejsce po przecinku ma wartość

Post autor: dentopolis »

w jaki sposób powinna wyglądać formuła suma.jeżeli gdy ma policzyć tylko te kwoty, gdzie trzecie miejsce po przecinku wynosi 1 np.20,001, 18,421
LibreOffice 7.6
Awatar użytkownika
Rafkus
Posty: 513
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: suma jeśli trzecie miejsce po przecinku ma wartość

Post autor: Rafkus »

Zakładam, że dane do zsumowania zaczynają się w kolumnie C (od C2) do jakieś nowej kolumny wpisz formułę:

Kod: Zaznacz cały

=JEŻELI.BŁĄD( FRAGMENT.TEKSTU ( C2;   ZNAJDŹ(",";  C2)+3;  1);   "--")
kolumnę z danymi potraktowałem tak jakby był tekst. Powyższa formuła podaje 3 "literę" po przecinku, tą formułę wpisałem do kolumny F (od F2). Formuła suma.jeżeli powinna wyglądać wówczas następująco:

Kod: Zaznacz cały

= SUMA.JEŻELI(F2:F6;   "1";   C2:C6)
Można również zastosować od razu formułę macierzową:

Kod: Zaznacz cały

= SUMA.JEŻELI (JEŻELI.BŁĄD (FRAGMENT.TEKSTU (C2:C6;  ZNAJDŹ(",";  C2:C6)+3;  1);  "--");  "1";  C2:C6)
PS. formułę macierzową zatwierdzamy ją kombinacją klawiszy CTRL + SHIFT + ENTER, lub zaznaczamy pole wyboru Macierz w Kreatorze funkcji
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Jermor
Posty: 2239
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: suma jeśli trzecie miejsce po przecinku ma wartość

Post autor: Jermor »

Sądzę, że wykorzystując formułę macierzową nieco prościej można to obliczyć w taki sposób:
=SUMA(zakres sumowania*(MOD(zakres sumowania*1000;10)=1))
czyli w jakimś realnym przykładowym obszarze np tak:

Kod: Zaznacz cały

=SUMA(J1:J4*(MOD(J1:J4*1000;10)=1))
AOO 4.1.15, LO 7.5.9 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Awatar użytkownika
Jermor
Posty: 2239
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: suma jeśli trzecie miejsce po przecinku ma wartość

Post autor: Jermor »

P.S do poprzedniego. Dla pewności uniknięcia błędu, wynikającego z cyfr na pozycjach dalszych niż trzecie miejsce po przecinku, formułę należałoby zapisać tak:
=SUMA(zakres sumowania*(LICZBA.CAŁK(MOD(zakres sumowania*1000;10))=1))
i jej wersja przykładowa.

Kod: Zaznacz cały

=SUMA(J1:J4*(LICZBA.CAŁK(MOD(J1:J4*1000;10))=1))
AOO 4.1.15, LO 7.5.9 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Awatar użytkownika
Rafkus
Posty: 513
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: suma jeśli trzecie miejsce po przecinku ma wartość

Post autor: Rafkus »

a jak będzie liczba ujemna np: -10,001 ?? znowu trzeba usprawnić formułę
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Jermor
Posty: 2239
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: suma jeśli trzecie miejsce po przecinku ma wartość

Post autor: Jermor »

Jeszcze raz przemyślałem ten temat. Problemem są zaokrąglenia wyników pośrednich. Wyniki @dentopolis są prawdopodobnie rezultatem jakichś obliczeń.
Dlatego jeżeli np. wynikiem jest 20,00082 a w rezultacie formatowania wyświetlane jest 20,001, to pobranie z tego ciągu trzeciej cyfry po przecinku (funkcją FRAGMENT.TEKSTU) zwróci 0. Stąd oba nasze rozwiązania nie są kompletne.
Moja propozycja na dziś to formuła macierzowa o postaci
=SUMA(zakres sumowania*(PRAWY(TEKST(zakres sumowania;"#0,000");1)="1"))

Kod: Zaznacz cały

=SUMA(J1:J4*(PRAWY(TEKST(J1:J4;"#0,000");1)="1"))
AOO 4.1.15, LO 7.5.9 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
dentopolis
Posty: 224
Rejestracja: pn wrz 23, 2013 2:48 pm

Re: suma jeśli trzecie miejsce po przecinku ma wartość

Post autor: dentopolis »

Panowie dzięki za odpowiedzi, znalazłem jeszcze inny sposób, tzn w kwocie wyświetlanej do 2 miejsc po przecinku np.10,00 dodaję jedynkę jako tysięczną czyli 10,001.
wtedy funkcja sumuje wszystkie liczby gdzie trzecia cyfra to 1:
=JEŻELI(JEŻELI.BŁĄD(FRAGMENT.TEKSTU(F2;ZNAJDŹ(",";F2;1)+3;1);"--")="1";F2;"")

tylko chciałbym żeby taka komórka została sformatowana warunkowo.jaką formułę tam wpisać dla całego zakresu B2:R99?
LibreOffice 7.6
Awatar użytkownika
Rafkus
Posty: 513
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: suma jeśli trzecie miejsce po przecinku ma wartość

Post autor: Rafkus »

Uważam, że ostatnia formuła @Jermora jest najzgrabniejsza:
=SUMA(J1:J4*(PRAWY(TEKST(J1:J4;"#0,000");1)="1"))
Jeśli zaś chodzi o formatowanie warunkowe to w warunkach wybierz:
Formuła jest, jako formułę wpisz PRAWY(TEKST($F2;"#0,000");1)="1", (w kolumnie F znajduje się kwota na podstawie której jest formatowany wiersz), określ jakiś styl i zakres zastosowania czyli B2:R99
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
dentopolis
Posty: 224
Rejestracja: pn wrz 23, 2013 2:48 pm

Re: suma jeśli trzecie miejsce po przecinku ma wartość

Post autor: dentopolis »

PRAWY(TEKST($F2;"#0,000");1)="1" przy zakresie b2:r99 działa tak, że zmienia styl całego wiersza a chciałbym tylko komórki spełniającej warunek
LibreOffice 7.6
Awatar użytkownika
Rafkus
Posty: 513
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: suma jeśli trzecie miejsce po przecinku ma wartość

Post autor: Rafkus »

To zamień zakres zastosowania na F2:F99
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
ODPOWIEDZ