Wyszukaj i dodaj +1 do ostatniej pozycji

Użytkowanie arkusza kalkulacyjnego
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Wyszukaj i dodaj +1 do ostatniej pozycji

Post autor: Pysio »

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

=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 zmieniony czw cze 18, 2020 9:28 pm przez Jan_J, łącznie zmieniany 2 razy.
Powód: Odwołanie do zewnętrznego hosta (prnscr.com) zastąpione osadzeniem kopii obrazka
OpenOffice 4.1.7 / LibreOffice 6.4.4.2 na Windows 10
Jan_J
Posty: 4567
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Post autor: Jan_J »

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

=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 (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Post autor: Pysio »

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) Pobrany 208 razy
OpenOffice 4.1.7 / LibreOffice 6.4.4.2 na Windows 10
Jan_J
Posty: 4567
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Post autor: Jan_J »

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

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

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) Pobrany 199 razy
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
Jermor
Posty: 2288
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Post autor: Jermor »

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) Pobrany 204 razy
Ostatnio zmieniony sob sie 01, 2020 10:19 pm przez Jermor, łącznie zmieniany 1 raz.
Powód: Wątpliwość co do wykorzystania w Apache OpenOffice.
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: 2288
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Post autor: Jermor »

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) Pobrany 204 razy
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.
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Post autor: Pysio »

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 / LibreOffice 6.4.4.2 na Windows 10
Awatar użytkownika
Jermor
Posty: 2288
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Post autor: Jermor »

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.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.
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Re: Wyszukaj i dodaj +1 do ostatniej pozycji

Post autor: Pysio »

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 / LibreOffice 6.4.4.2 na Windows 10
ODPOWIEDZ