Strona 1 z 1

unikalne wystąpienia

: wt sty 05, 2021 10:40 pm
autor: dentopolis
w kolumnie A mam kategorie np:
telewizor
lodówka
komputer
komputer
telewizor

w jaki sposób wyświetlić w drugim arkuszu tylko trzy unikalne kategorie? chciałbym żeby to była funkcja a nie ręczne filtrowanie danych.

Re: unikalne wystąpienia

: wt sty 05, 2021 11:43 pm
autor: Rafkus
Uważam, że najprościej to zrobić tabelą przestawną.

Re: unikalne wystąpienia

: śr sty 06, 2021 12:33 am
autor: dentopolis
tylko że chcę te dane potem pobrać jak z konkretnej komórki więc szukam innej metody

Re: unikalne wystąpienia

: śr sty 06, 2021 12:36 pm
autor: Rafkus
No to w takim razie można zastosować takie rozwiązanie, wykorzystującą funkcję macierzową:

Kod: Zaznacz cały

=INDEKS($A$1:$A$17;   PODAJ.POZYCJĘ(0;   LICZ.JEŻELI($G$1:G1;  $A$1:$A$17);   0))
gdzie:
$A$1:$A$17 - zakres danych: wszystkie dane z kolumny A;
$G$1:G1 - rozszerzający się zakres unikalnych wystąpień kategorii, W G1 może być np. pierwsza wartość z kolumny A, a przedstawiona powyższa formuła będzie generować kolejne wartości;
LICZ.JEŻEL - tworzy w pamięci 0-1 macierz danych informującą ile razy dane kryterium (czyli każda wartość z zakresu danych) wystąpiła w unikalnym zakresie;
PODAJ.POZYCJĘ - zwraca pozycję na której znajduje pierwsze nieznane wystąpienie unikalnej wartości, a dzięki funkcji INDEKS zamienimy tą informację na wartość z tego pola.

Tą formułę można jeszcze obudować formułą ukrywającą wystąpienie błędu czyli nie znalezienia unikalnych wystąpień.
Przypominam: Funkcję macierzową zatwierdza się przez jednoczesne wciśnięcie klawiszy CTRL+SHIFT+ENTER

Sprostawanie:
Formuła, którą podałem jest musi być formułą macierzową tylko w OpenOffice.
W LibreOffice można ją potraktować jako zwykłą formułę.

Re: unikalne wystąpienia

: śr sty 06, 2021 12:50 pm
autor: Jermor
Napisałeś:
dentopolis pisze:... a nie ręczne filtrowanie danych.
Oczekujesz zatem funkcji, która automatycznie odpowie na każdą zmianę danych. Takiej możliwości nie ma także wspomniana przez @Rafkus tabela przestawna. Gdyż po każdej zmianie, która zaszła w kolumnie źródłowej, musisz wymusić odświeżenie tabeli przestawnej, a robisz to ustawiając się wewnątrz niej i wywołując "Dane -> Tabela przestawna -> Odśwież" albo po kliknięciu prawym przyciskiem myszki, wybierając w menu kontekstowym "Odśwież".
Co do pobierania danych, jak ze zwykłej komórki, to dla tabeli przestawnej istnieje funkcja WEŹDANETABELI pozwalająca pobrać oczekiwane dane z takiej tabeli, choć w przypadku wykorzystania tabeli wyłącznie w celu uzyskania listy indywidualnych nazw pozycji, czyli de facto boczku takiej tabeli, wykorzystanie tej funkcji nie będzie chyba możliwe.
Jeśli powyższego sposobu nie uznajesz za "ręczny", to w podobny sposób możesz wykorzystać odfiltrowanie danych, bez duplikatów, do wybranego miejsca. Po pierwszym, rzeczywiście ręcznym, odfiltrowaniu następne otrzymasz korzystając z polecenia "Dane -> Odśwież zakres". Jak skorzystać z tej możliwości można poczytać tutaj https://yestok.pl/lbo/y59.php. Otrzymasz wówczas kolumnę indywidualnych nazw, jednak w przeciwieństwie do tabeli przestawnej, wielkość liter będzie miała znaczenie. Ponadto nazwy pojawia się na tej liście w kolejności pierwszego wystąpienia w danych źródłowych, a nie w kolejności alfabetycznej, tak jak to czyni tabela przestawna.

Re: unikalne wystąpienia

: pn lis 22, 2021 1:17 am
autor: Rafkus
Wybaczcie, że "odgrzewam tego starego kotleta", ale chciałem sobie uprościć formuły zwracające unikalne wystąpienia więc napisałem własną funkcję, która to robi. A skoro pamiętałem, że taki problem był poruszany na tym forum, pozwolę sobie ją zaprezentować:

EDIT:
Nową nieco poprawioną funkcję wraz z opisem i przykładami można znaleźć tutaj: Unikalne wystąpienia (po raz trzeci).