Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 75076 Skopiuj do schowka Funkcja UNIKATOWE - zagadka
Autor Wiadomość
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Pomógł: 3616 razy
Posty: 10635
Wysłany: 05-10-2023, 21:25   Funkcja UNIKATOWE - zagadka

Dawno już nie mieliśmy w tym dziale zagadki. Może więc pora na coś nowego.

Tym razem zagadka będzie adresowana głównie do użytkowników nowej wersji Excela, bo w zasadzie dotyczyć będzie funkcji UNIKATOWE. Jak wiadomo, ta funkcja pozwala na odfiltrowanie duplikatów i pozostawienie wartości różnych. Może filtrować dane kolumnami lub wierszami, ale jeśli podamy jej argument w postaci tablicy dwuwymiarowej, to jest on przetwarzany jako całość. Nie ma możliwości, jak w przypadku funkcji FILTRUJ czy SORTUJ, filtrowania czy sortowania całej tablicy na podstawie kryterium opartego na jednej kolumnie czy jednym wierszu.

Gdy pojawi się taki problem, trzeba zaangażować do pomocy również inne funkcje. Zadania tego rodzaju można rozwiązać na przykład za pomocą filtra zaawansowanego stosując go "w miejscu". Mnie jednak chodzi w tym przypadku o rozwiązanie za pomocą formuły.
W załączonym pliku jest ilustracja do tego zadania. Jest tam tabelka złożona z 3 kolumn: Imię, Nazwisko i Grupa. Celem jest odfiltrowanie duplikatów na podstawie kolumny Grupa i pozostawienie tylko pierwszych osób z danej grupy.

Jeśli ktoś z użytkowników starszych wersji Excela będzie miał pomysł na rozwiązanie funkcjami tradycyjnymi, to również zapraszam do zabawy.

Filtr_unikaty_pyt.xlsx
Pobierz Plik ściągnięto 111 raz(y) 10.73 KB

ID posta: 430359 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Pomógł: 3616 razy
Posty: 10635
Wysłany: 11-10-2023, 19:44   

Widzę, że sprawy bieżące tak bardzo zaprzątają uwagę uczestników naszego Forum, że brak już czasu na rozwiązywanie zagadek. :cry:
Nikt nie przesłał propozycji rozwiązania, ale 7 osób pobrało załącznik, więc przynajmniej wyraziło zainteresowanie. Należy się im zatem informacja, jak widzi możliwości rozwiązania autor zagadki.

W przypadku możliwości użycia funkcji UNIKATOWE zastosowałbym taką formułę:
Kod:
=UNIKATOWE(WYBIERZ.WIERSZE($A$8:$C$14;PODAJ.POZYCJĘ($C$8:$C$14;$C$8:$C$14;0)))
Funkcja WYBIERZ.WIERSZE jest wygodniejsza od funkcji INDEKS gdy chodzi o wybór całych wierszy. Funkcja PODAJ.POZYCJĘ zwraca listę pierwszych wystąpień poszczególnych wartości w kolumnie C.

Gdy mamy starszą wersję Excela można zastosować formuły tablicowe jednowierszowe:
Kod:
=JEŻELI.BŁĄD(INDEKS($A$8:$C$14;PODAJ.POZYCJĘ(0;LICZ.JEŻELI(L$7:L7;$C$8:$C$14);0);0);"")
Kopie tej formuły odwołują się (w kolumnie L) do poprzednio wyświetlonych wyników. Jest to nieco niewygodne, gdy chcemy skopiować formułę w inne miejsce.

Inny wariant (nieco dłuższa formuła, też tablicowa wierszowa) wymaga tylko użycia licznika WIERSZ(A1):
Kod:
=JEŻELI.BŁĄD(INDEKS($A$8:$C$14;AGREGUJ(15;6; (WIERSZ($C$8:$C$14)-WIERSZ($C$7))/(PODAJ.POZYCJĘ($C$8:$C$14;$C$8:$C$14;0)= WIERSZ($C$8:$C$14)-WIERSZ($C$7));WIERSZ(A1));0);"")


Filtr_unikaty_rozw.xlsx
Pobierz Plik ściągnięto 86 raz(y) 11.84 KB

ID posta: 430519 Skopiuj do schowka
 
 
Koran 
Exceloholic


Wersja: Win Office 2007
Posty: 151
Wysłany: 11-10-2023, 20:38   

Maciej Gonet napisał:
Cytat:
Nikt nie przesłał propozycji rozwiązania, ale 7 osób pobrało załącznik, więc przynajmniej wyraziło zainteresowanie.

Myślę Maciej, że to nie jest wina braku zainteresowania, lecz bardziej z wersji korzystania.
Osobiście przekonałem się, że rozwiązania dla Excel 365 nie są dla starszych wersji, więc nie ma, co się dziwić skoro większość tak jak i ja korzystamy ze starszych wersji:(
Jednak należy Ci podziękować za Twoje zaangażowanie na tym Forum.
Nie wiem jak inni, ale ja jestem pełen podziwu za Twoją aktywność i za to, co tu robisz i za to bardzo Ci dziękuję.
Pozdrawiam Koran
ID posta: 430522 Skopiuj do schowka
 
 
Bill Szysz 
Excel Expert



Wersja: Win Office 365
Pomógł: 1075 razy
Posty: 4184
Wysłany: 13-10-2023, 10:59   

Maciej Gonet, qrcze....przegapiłem Twoją zagadkę:-(
Zaproponowałeś zgrabne rozwiązanie....jednak mam dla niego małą modyfikację.
Kod:
=WYBIERZ.WIERSZE(A8:C14;X.DOPASUJ(UNIKATOWE(C8:C14);C8:C14))

W ten sposób nie przeszukujemy zakresu C8:C14 tyle razy ile jest wierszy w tym zakresie a jedynie tyle razy ile jest unikatów w tym zakresie (w tym przypadku 3 razy zamiast 7).

Dzięki za zagadkę
:beer :cool1
_________________
Zlecenia, konsultacje, doradztwo i szkolenia z Power Query, Power BI i Excela - Raporty, Analizy, Projekty
Pozdrawiam, były szbill62 aktualnie Bill Szysz
ID posta: 430567 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Pomógł: 3616 razy
Posty: 10635
Wysłany: 13-10-2023, 11:34   

Koran i Bill Szysz, bardzo dziękuję za zainteresowanie i miłe słowa. :beer

Rozwiązanie Billa wydaje się w tym przypadku optymalne ze względu na szybkość.
Natomiast ogólnie można tu użyć kilku wariantów, przestawiając kolejność funkcji i używając wymiennie PODAJ.POZYCJĘ i X.DOPASUJ.
Ja wybrałem taki wariant, aby zaznaczyć, że funkcja UNIKATOWE może filtrować całe wiersze, a nie tylko pojedyncze komórki. W przykładach podawanych zazwyczaj jako zakres funkcji podaje się pojedynczą kolumnę.
ID posta: 430570 Skopiuj do schowka
 
 
hurgadion 
ExcelSpec



Wersja: Win Office 2021
Pomógł: 1223 razy
Posty: 2824
Wysłany: 03-11-2023, 10:01   

Hej,
ciekawy problem, mam trochę inne rozwiązanie niż wyżej podane:
Kod:

=INDEKS(A:A;MIN(JEŻELI($C$8:$C$14=INDEKS(UNIKATOWE($C$8:$C$14);WIERSZ()-11);WIERSZ($C$8:$C$14);"")))

Pozdrawiam :lol:

Filtr_unikaty_pyt.sol.xlsx
Pobierz Plik ściągnięto 82 raz(y) 11.35 KB

ID posta: 431020 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Pomógł: 3616 razy
Posty: 10635
Wysłany: 03-11-2023, 12:00   

Widzę, że przeglądasz stare tematy i nadrabiasz zaległości.
Bardzo dziękuję za nową propozycję rozwiązania. Jak to zwykle bywa w Excelu zadanie można rozwiązywać wieloma sposobami, co kto lubi i co się komu skojarzy.
ID posta: 431023 Skopiuj do schowka
 
 
hurgadion 
ExcelSpec



Wersja: Win Office 2021
Pomógł: 1223 razy
Posty: 2824
Wysłany: 04-11-2023, 09:18   

I jeszcze ciut krótsza wersja rozwiązania:
Kod:

=X.WYSZUKAJ(UNIKATOWE($C$8:$C$14);$C$8:$C$14;A$8:A$14;"";0;1)

Ciekawe są te nowe funkcje Excela, dają sporo możliwości. Pozdrawiam. :lol:

Filtr_unikaty_pyt.sol2.xlsx
Pobierz Plik ściągnięto 100 raz(y) 11.84 KB

ID posta: 431048 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona uĹźywa plikĂłw cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przegl�darce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe