Wyszukaj i dodaj +1 do ostatniej pozycji

Użytkowanie arkusza kalkulacyjnego

Wyszukaj i dodaj +1 do ostatniej pozycji

Postprzez Pysio » Cz cze 18, 2020 8:13 pm

Jak to zorganizować, aby wyszukało to co jest w danej komórce, porównało z komórkami powyżej i dodało +1?

Obrazek prezentuje o co mi chodzi:

indeks.png


W pierwszym przykładzie- wpisałem z palca jak powinno być.
W drugiej kolumnie zastosowałem funkcję:

Kod: Zaznacz cały   Rozszerz widokZwiń widok
=WYSZUKAJ(G3;$G$1:G2;$H$1:H2)+1


Oczywiście Pierwsza dana ("100") wprowadzona jest z palca

Nie mogę rozgryźć dlaczego tak dziwnie pokazuje.
Dla pierwszych danych działa jak należy, ale dla nowej danej, jakby się zeruje.

Zastosowałem to w LibreOffice, ale ostatecznie chcę to przenieść na arkusz googlowy. Jak tutaj rokminię to sobie przemianuję to na funkcje googlowe.
Ostatnio edytowano Cz cze 18, 2020 9:28 pm przez Jan_J, łącznie edytowano 2 razy
Powód: Odwołanie do zewnętrznego hosta (prnscr.com) zastąpione osadzeniem kopii obrazka
OpenOffice 4.1.7 na Windows 10
Pysio
 
Posty: 37
Dołączył(a): Cz mar 12, 2020 11:39 am

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Postprzez Jan_J » Cz cze 18, 2020 9:25 pm

Funkcja Wyszukaj(co; gdzie; skąd_wynik)
W helpie tej funkcji (np. file:///opt/libreoffice6.2/help/pl/text/scalc/01/04060109.html) przeczytasz m.in.
Przeszukiwany wektor funkcji WYSZUKAJ musi być ponadto posortowany, w przeciwnym razie funkcja nie będzie zwracać użytecznych wyników.

Twoje dane nie są posortowane.

Niestety help nie precyzuje, która z wartości powtarzających się w przeszukiwanej kolumnie zostanie odnaleziona. Z działania wnioskuję, że ostatnia, i zapewne o to Ci chodzi.

Funkcje które nie wymagają uporządkowania przy przeszukiwaniu wektora (wyszukaj.pionowo, podaj.pozycję) będą znajdować na ogół pierwsze wystąpienie.

Z tego wniosek, że Twój pomysł nadawania kolejnych numerów wpisom o danym kluczu nie za bardzo da się zrealizować za pomocą samych funkcji wyszukujących.

Ale można brać maksimum z wartości umieszczonych wyżej, o tym samym kluczu. To się łatwo pisze formułą tablicową. W kolumnie E, począwszy od wiersza 3
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=1+MAX((D$2:D2=D3)*(E$2:E2))
z zatwierdzeniem przez <Ctrl+Shift+Enter>. Powielanie przez Kopiuj/Wklej komórkę, nie przez przeciąganie.
(Założyłem że Twoje liczby są dodatnie. Pierwszy czynnik produkuje wektor zer-jedynek, przez które mnożone są liczby z kolumny E. Przy wartościach ujemnych może pracować dziwnie, bo 0 w przypadku nieznalezienia będzie większe niż niektóre wpisy.)
JJ
LO 6.2 ∙ AOO 4.1.7 ∙ Python (3.8|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 4145
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Postprzez Pysio » So sie 01, 2020 5:30 pm

Powróciłem do tematu.

Wydaje mi się, że jestem bardzo blisko rozwiązania.
Jednak mam problem z jednym wierszem, możecie mi wytłuamczyć, dlaczego wiersz 4 i 10 działają prawidłowo a analogiczny 5 i 11 już nie?

W załączniku plik z moimi wypocinami, póki co jeszcze niezoptymalizowanymi :)

Pomóżcie bo stracę resztę włosów na czuprynie, a tych nie zostało zbyt dużo :)
Załączniki
NadawanieSKU.ods
(15.61 KiB) Pobrane 9 razy
OpenOffice 4.1.7 na Windows 10
Pysio
 
Posty: 37
Dołączył(a): Cz mar 12, 2020 11:39 am

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Postprzez Jan_J » So sie 01, 2020 9:52 pm

Może nieuważnie czytałem pierwszy post, a może niejasno opisałeś problem. Ale wtedy rozumiałem, że kolejne numery są nadawane KOLEJNYM WYSTĄPIENIOM TEGO SAMEGO kodu
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Kod   Wartość
ABC123   100   ← pierwsze wystąpienie ABC123
ABC123   101   ← drugie wystąpienie ABC123
CBA321   100   ← pierwsze wystąpienie CBA321
ABC321   100   ← pierwsze wystąpienie ABC321
ABC123   102   ← trzecie wystąpienie ABC123
ABC111   100   ← pierwsze wystąpienie ABC111
ABC123   103
Tego przypadku dotyczyły moje odpowiedzi.

Zaś Twój ostatni przykład pokazuje jasno, że chcesz ponumerować KODY W KOLEJNOŚCI ICH POJAWIANIA SIĘ w spisie
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Kod   Wartość
ABC123   100   ← pierwszy wpisany kod
ABC123   100   ← pierwszy wpisany kod
CBA321   101   ← drugi wpisany kod
ABC321   102   ← trzeci wpisany kod
ABC123   100   ← pierwszy wpisany kod
ABC111   103
ABC123   100

Są to różne zadania. Zobacz propozycję w załączniku.

Twój problem polega na tym, że funkcje wyszukujące domyślnie zakładają uporządkowanie przeszukiwanej kolumny i wyszukują w niej aproksymacyjnie, a nie dosłownie. Można o tym przeczytać w helpach.
Zastąpiłem funkcję wyszukaj funkcją podaj.pozycję. Nie jest to konieczne, a kluczowe jest uzupełnienie o informację, że kolumna nie jest uporządowana.
Wartość startową 99 wyniosłem do osobnej komórki. Można by ją osadzić w kodzie formuł, z pewną stratą dla elastyczności i czytelności schematu.
Załączniki
NadawanieSKU.ods
(7.61 KiB) Pobrane 5 razy
JJ
LO 6.2 ∙ AOO 4.1.7 ∙ Python (3.8|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 4145
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Postprzez Jermor » So sie 01, 2020 9:59 pm

Ja także podsyłam ci rozwiązanie. Nie chciało mi się analizować twojej formuły, więc proponuję swoją, w kolumnie F.
Założyłem, że pierwszą wartość, tę w F2, wpisujesz samodzielnie.
Teraz zdałem sobie sprawę z tego, że sygnujesz w podpisie Apache OpenOffice. Nie jestem pewien, bo akurat nie mogę tego teraz sprawdzić, czy funkcja którą zastosowałem (MAKS.WARUNKÓW, a po ludzku MAXIF) jest dostępna w tej wersji oprogramowania. W LibreOffice - jest.
Załączniki
NadawanieSKUa.ods
(16.62 KiB) Pobrane 5 razy
Ostatnio edytowano So sie 01, 2020 10:19 pm przez Jermor, łącznie edytowano 1 raz
Powód: Wątpliwość co do wykorzystania w Apache OpenOffice.
AOO 4.1.7, LO 6.3.6 (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 ktoś podał rozwiązanie.
Avatar użytkownika
Jermor
 
Posty: 1178
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Postprzez Jermor » N sie 02, 2020 10:52 am

Funkcja MAKS.WARUNKÓW nie jest dostępna w Apache OpenOffice.
Dla tej wersji programu Calc utworzyłem dwa warianty formuły. Załączam je w zmodyfikowanym pliku.

W arkuszach Google funkcja MAXIFS czyli odpowiednik MAKS.WARUNKÓW jest dostepna.
Załączniki
NadawanieSKUam.ods
(19.8 KiB) Pobrane 4 razy
AOO 4.1.7, LO 6.3.6 (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 ktoś podał rozwiązanie.
Avatar użytkownika
Jermor
 
Posty: 1178
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Postprzez Pysio » Pn sie 03, 2020 4:52 pm

Ok, wygląda to dobrze w Libre/ OO Calc.
Ale tym razem projekt robie na arkuszach Googlowych :D
O ile fajnie zadziałało przepięcie MAXIFS to jak pomóc googlowi w interpretacji BIEŻACY() ?

Help Caclowy za bardzo mi nie pomaga, a na wikibooks nie ma nic na ten temat :(
OpenOffice 4.1.7 na Windows 10
Pysio
 
Posty: 37
Dołączył(a): Cz mar 12, 2020 11:39 am

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Postprzez Jermor » Pn sie 03, 2020 6:11 pm

Funkcja BIEŻĄCY() w Calcu podaje wartość obliczoną w formule do momentu wystąpienia tej funkcji.
=MAKS.WARUNKÓW($F$2:F20;$A$2:A20;A21)+JEŻELI(BIEŻĄCY();0;MAKS($F$2:F20)+1)
W powyższej formule pierwszym argumentem funkcji JEŻELI jest obliczony wynik funkcji MAKS.WARUNKÓW. Odpowiada to więc takiej formule:
=MAKS.WARUNKÓW($F$2:F20;$A$2:A20;A21)+JEŻELI(MAKS.WARUNKÓW($F$2:F20;$A$2:A20;A21);0;MAKS($F$2:F20)+1)
Tylko, że przy takim zapisie można to sprowadzić do:
JEŻELI(MAKS.WARUNKÓW($F$2:F20;$A$2:A20;A21);MAKS.WARUNKÓW($F$2:F20;$A$2:A20;A21);MAKS($F$2:F20)+1)
AOO 4.1.7, LO 6.3.6 (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 ktoś podał rozwiązanie.
Avatar użytkownika
Jermor
 
Posty: 1178
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Postprzez Pysio » Pn sie 03, 2020 7:37 pm

Działa prawidłowo. Po raz kolejny dziękuję.

Musze się bliżej przyjrzeć tej funkcji bo widzę, że fajnie działa.
OpenOffice 4.1.7 na Windows 10
Pysio
 
Posty: 37
Dołączył(a): Cz mar 12, 2020 11:39 am


Powrót do Calc

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości