[SOLVED]Suma jeżeli na podstawie wartości z innej kolumny

Użytkowanie arkusza kalkulacyjnego
brex87
Posty: 44
Rejestracja: wt maja 14, 2019 8:34 am

[SOLVED]Suma jeżeli na podstawie wartości z innej kolumny

Post autor: brex87 »

Dzień dobry.
Czy istnieje funkcja, która wyświetli zsumowaną wartość na podstawie dwóch argumentów ?
Funkcja powinna zadziałać w sposób następujący:
- znajdź szukany argument,
- zlicz wartości spełniający argument,
- zwróc sumę na podstawie zsumowanego argumentu pasującego do drugiego argumentu.
W załączeniu przykład z opisanymi kolumnami.
Załączniki
przyklad.ods
(18.03 KiB) Pobrany 134 razy
Ostatnio zmieniony wt lip 02, 2019 3:17 pm przez brex87, łącznie zmieniany 1 raz.
LibreOffice 6.2.2.2 (x64)
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Suma jeżeli na podstawie wartości z innej kolumny

Post autor: Jermor »

W swoich danych masz jednak bałagan. Chodzi o wyodrębnienie pojedynczych dat. Twoje daty zawierają pełną datę oraz czas. To tylko dzięki odpowiedniemu formatowaniu widzisz napisy w rodzaju "20kwietnia". W rzeczywistości dla wymienionego "20kwietnia" są tam wpisane następujące wartości: 2019-04-20 18:05:35, 2019-04-20 19:05:24 i 2019-04-20 19:41:34. Z punktu widzenia danych są to trzy rożne wartości. Zatem po pierwsze należałoby unormować te zapisy, bo dopiero wtedy można wyodrębnić każdą pojedynczą wartość.
Sposobów jest wiele. Z unormowanych jednoznacznych wartości daty można odfiltrować pojedyncze daty, a mając je - utworzyć potrzebne wyniki.
To przedstawiłem ci w załączonym zwrotnie pliku, w arkuszu Arkusz2
Nie wiem jak będzie się rozwijał ten twój projekt, ale sugeruję utworzenie nazw dla poszczególnych obszarów. Ułatwi ci to budowanie formuł i panowanie nad całością. Dla przykładu, gdybyś nadał nazwy: "daty" dla obszaru od A2:A91, "km" dla obszaru B2:B91 i "kto" dla C2:C91 to zamiast formuły np:
=SUMA.WARUNKÓW($B$2:$B$91;$A$2:$A$91;E2;$C$2:$C$91;$F$1)
można napisać
=SUMA.WARUNKÓW(km;daty;E2;kto;$F$1)
Załączniki
brex87 przykladsuma.ods
(61.83 KiB) Pobrany 142 razy
AOO 4.1.15, LO 24.8.2 (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.
brex87
Posty: 44
Rejestracja: wt maja 14, 2019 8:34 am

Re: Suma jeżeli na podstawie wartości z innej kolumny

Post autor: brex87 »

Bardzo dziękuję za obszerne i dokładne wytłumaczenie złożoności mojego problemu.
Zdaje sobie sprawę, że był tam bałagan, zrzutkę danych mam zawsze formatowaną: DD.MMMM.YY - HH:MM
Obciąłem formatowanie do wartości DDMMMM w celu łatwiejszej analizy.
Jednak tak jak zauważyłeś problem był przy miksowaniu wartości dat, która była analizowana każda z osobna jak i przy wyświetlaniu argumentu przy szukanej dacie.
Efekt jest taki, że mając zrzutkę danych z programu z każdym dniem i kilkoma wartościami w danym dniu, jestem w stanie wyfiltrować całość na poszczególne pojedyncze dni i zsumować wartości na podstawie argumentu do kogo należy.
Jestem zadowolony z efektu i bardzo dziękuję za pomoc.
Opcja z macierzą okazała się zbawienna.
LibreOffice 6.2.2.2 (x64)
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: [SOLVED]Suma jeżeli na podstawie wartości z innej kolumn

Post autor: Jermor »

brex87 pisze:Obciąłem formatowanie do wartości DDMMMM w celu łatwiejszej analizy.
Pamiętaj, że formatowanie nie ma nic wspólnego z zawartością komórki. Komórkę zawierającą np. wspomniany przeze mnie zapis 2019-04-20 18:05:35 formatujesz kodem DDMMMM i zapis ten zostanie wyświetlony jako 20kwietnia ale po sformatowaniu kodem SS zobaczysz liczbę 35 a kodem QQ zobaczysz II kwartał. Komórka w rzeczywistości zawiera pierwotnie wpisaną wartość a my tylko zmieniamy sposób jej wyświetlania.

Nie wiem co masz na myśli pisząc o opcji z macierzą ale jeżeli chodzi ci o wysupłanie pojedynczych dat z tego zbioru, czyli utworzeniu wykazu znajdującego się w komórkach od E2:E11 to mając na względzie to, że będzie ci przybywać dat i danych sugeruję co następuje:
Obszarowi komórek od A1 do ostatniej użytej (na razie A91) przypisać nazwę pseudobazy danych. Zrobisz to zaznaczając obszar a następnie wybierając "Dane -> Określ zakres" i przypisując jakąś nazwę.
Co to daje? Otóż jeżeli podczas tworzenia odfiltrowanych danych była zaznaczona opcja "Zachowaj reguły filtru", to po dopisaniu nowych danych wewnątrz tak nazwanego zakresu, nie trzeba ponownie tworzyć filtrowania. Wystarczy ustawić kursor komórkowy na dowolnej komórce wewnątrz nazwanego zakresu i przywołać polecenie: "Dane -> Odśwież zakres".
Nowe daty pojawią się w zestawieniu, formuły jednak należy skopiować do pustych miejsc.

Wiadomo, że jeśli dopisze się dane wewnątrz jakiegoś zakresu, to formuły uwzględniające ten zakres zawsze automatycznie to uwzględnią. Tak się jednak nie stanie, gdy nowe dane dopiszemy bezpośrednio po zakresie. Jeżeli w opcjach Calca jest ustawione "Rozszerz odwołania przy wstawianiu nowych kolumn/wierszy" (Narzędzia -> Opcje -> LibreOffice Calc -> Ogólne) to wykonanie polecenia dodania nowego wiersza lub nowych wierszy po ostatnim wierszu obszaru spowoduje automatyczne rozszerzenie obszarów w formułach i użytych nazwach. To oznacza, że przed wpisaniem nowych danych trzeba dodać nowe wiersze (lub kolumny, bo opcja dotyczy także kolumn). Dodane wiersze są niewidoczne bo są przecież puste, ale od razu zmieniają zakresy w formułach. Teraz można wpisać dane a one zostaną natychmiast uwzględnione w obliczeniach. Po dopisaniu danych można wykonać odświeżanie zakresu.
To powinno usprawnić pracę.
AOO 4.1.15, LO 24.8.2 (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.
brex87
Posty: 44
Rejestracja: wt maja 14, 2019 8:34 am

Re: [SOLVED]Suma jeżeli na podstawie wartości z innej kolumn

Post autor: brex87 »

Dzień dobry.
Na chwilę obecną poradziłem sobie z macierzą:
{=SUMA.WARUNKÓW(dane.$G$2:$G$9000;TEKST(dane.$D$2:$D$9000;"DDMMMM");TEKST($A2;"DDMMMM");dane.$H$2:$H$9000;D$1)}

Zeszyt dane to zawartość z programu.
Kolumna "D" ma formatowanie ustawione na Data: DDMMMMHH:MM i jest to informacja na temat konkretnego dnia, który może powtarzać się u różnych osób.
Kolumna "G" to wartości formatowane jako liczba i przedstawiają liczbę KM.
Kolumna "H" to osoba, która jest przypisana do danego dnia, różne osoby mogą występować kilka w danym dniu.

Zeszyt wynik to poukładane informacje z wyliczeniami z zeszytu dane:
Kolumna "A" to unikatowa data.
Kolumna "D" i dalsze kolumny to osoba, która pojawia się w zeszycie dane w kolumnie "H".

Efekt końcowy jest na tyle zadowalający, że czas analizowania skrócił się do kilkunastu minut polegający tylko na przekopiowaniu wartości z pliku eksportowanego z programu i dostoswanie go na potrzeby XL'a. Wcześniej analiza np. od kwietnia do czerwca, zajmowała ponad 1h.
LibreOffice 6.2.2.2 (x64)
ODPOWIEDZ