Witam. Mam problem z wyszukiwaniem liczb z tabeli, w której niektóre z danych są takie same. Stosując funkcję WYSZUKAJ lub WYSZUKAJ.POZIOMO z liczb zduplikowanych zwraca mi zawsze jedną tylko liczbę (pierwszą ze znalezionych) a chciałabym mieć każda z tych liczb zwróconą (nieważne w jakiej kolejności). Ciężko to wytłumaczyć, ale lepiej to opisalam w calcu na moim przykładzie. Nie umiem stosować makr. Dużo szukałam na internecie, znalazłam jedną z opcji, ale nie jestem nawet w stanie jej spróbować czy pasowałaby do mojej sytuacji, bo rozwiązanie jest dla excela z funkcjami, których Open Office nie ma - i bazuje na CSE a z tym nigdy nie pracowałam, choć to chyba nie jest tak trudne tak jak makra. Ale CSE sama napisać nie umiem. Podaję tą stronę: https://exceliadam.pl/excel/zwracanie-k ... h-wartosci
Próbowałam robić zagnieżdzone funkcje z WYSZUKAJ+MAKS.K+KOLUMNA ale nic się nie sprawdza. Czy ktoś z Was umie coś takiego zrobić? Byłabym wdzięczna. Pozdrawiam.
Segregacja/wyszukiwanie zduplikowanych liczb
Segregacja/wyszukiwanie zduplikowanych liczb
- Załączniki
-
- segregacja.ods
- (22.5 KiB) Pobrany 188 razy
Ostatnio zmieniony śr kwie 29, 2020 9:22 pm przez ulaR, łącznie zmieniany 1 raz.
OpenOffice 4.1.3 na Windows 7
Re: Segregacja/wyszukiwanie zduplikowanych liczb
Jak dużo jest tych danych?
jeśli nie więcej niż kilka tysięcy, spróbuj sprawdzić, ile razy dana wartość występuje w danej kolumnie ale nie niżej niż w bieżącej komórce. Jeśli 1, to pojawia się po raz pierwszy.
=licz.jeżeli(A$1:A1; A1)
i potem zrób filtr na tej kolumnie zliczeń dla wartości 2. Dostaniesz komplet drugich wystąpień, czyli każdą powtarzającą się daną dokładnie raz.
Metoda jest mało efektywna, bo zlicza za każdym razem krotność w bloku od początku do bieżącego miejsca. Dlatego zastrzegłem, że nadaje się dla krótkich ciągów.
Skuteczniej byłoby posortować, a potem sprawdzać, czy bieżący wpis jest innny niż jego bezpośredni poprzednik (pierwsze wystąpienie) albo taki sam jak bezpośredni poprzednik, ale inny niż jego poprzednik (drugie wystąpienie). To zresztą da się zrobić prościej formułą typu
=jeżeli(A2=A1;B1+1;1)
i tak jak poprzednio, założyć filtr na wartość 2.
PS. CSE to żargon; porządnie się to nazywa „formuły tablicowe”, „formuły macierzowe”, „formuły wektorowe”; ew. „składnia” zamiast „formuły”. Znaczenia skrótu CSE ani bym się domyślił, musiałem wspomóc się wyszukiwarką.
jeśli nie więcej niż kilka tysięcy, spróbuj sprawdzić, ile razy dana wartość występuje w danej kolumnie ale nie niżej niż w bieżącej komórce. Jeśli 1, to pojawia się po raz pierwszy.
=licz.jeżeli(A$1:A1; A1)
i potem zrób filtr na tej kolumnie zliczeń dla wartości 2. Dostaniesz komplet drugich wystąpień, czyli każdą powtarzającą się daną dokładnie raz.
Metoda jest mało efektywna, bo zlicza za każdym razem krotność w bloku od początku do bieżącego miejsca. Dlatego zastrzegłem, że nadaje się dla krótkich ciągów.
Skuteczniej byłoby posortować, a potem sprawdzać, czy bieżący wpis jest innny niż jego bezpośredni poprzednik (pierwsze wystąpienie) albo taki sam jak bezpośredni poprzednik, ale inny niż jego poprzednik (drugie wystąpienie). To zresztą da się zrobić prościej formułą typu
=jeżeli(A2=A1;B1+1;1)
i tak jak poprzednio, założyć filtr na wartość 2.
PS. CSE to żargon; porządnie się to nazywa „formuły tablicowe”, „formuły macierzowe”, „formuły wektorowe”; ew. „składnia” zamiast „formuły”. Znaczenia skrótu CSE ani bym się domyślił, musiałem wspomóc się wyszukiwarką.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Segregacja/wyszukiwanie zduplikowanych liczb
Dziękuję, ale czy patrzyłeś na calca? Bo te metody chyba nie pasują do moich danych, bo liczby w kolumnach nie powtarzają się, więc tu nie zadziała zliczanie krotności ich ich wystąpień. Liczby te maja też zupełnie inne numery (mówię o numerach z R.1.) i są po pierwszej segregacji haotycznie porozrzucane.
Dla lepszego zrozumienia jeszcze raz wysyłam calca z rozszerzonym wytłumaczeniem jak liczby haotycznie się porozrzucały, bo chyba mało jasno to wytłumaczylam. Chciałabym, żeby znów wróciły na swoje miejsce i żebym miała jeden wspólny nagłówek dla nich (nagłówek na szaro od 1 do 30)
Dla lepszego zrozumienia jeszcze raz wysyłam calca z rozszerzonym wytłumaczeniem jak liczby haotycznie się porozrzucały, bo chyba mało jasno to wytłumaczylam. Chciałabym, żeby znów wróciły na swoje miejsce i żebym miała jeden wspólny nagłówek dla nich (nagłówek na szaro od 1 do 30)
- Załączniki
-
- segregacja1.ods
- (23.24 KiB) Pobrany 192 razy
OpenOffice 4.1.3 na Windows 7
Re: Segregacja/wyszukiwanie zduplikowanych liczb
Troszkę już późno więc na razie dam tylko rozwiązania...
Ostatnio zmieniony czw kwie 30, 2020 9:47 am przez Rafkus, łącznie zmieniany 1 raz.
Powód: skasowałem plik, poniżej podana nowa wersja
Powód: skasowałem plik, poniżej podana nowa wersja
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Segregacja/wyszukiwanie zduplikowanych liczb
Jutro sprawdzę czy na 100% ułoży się to do moich danych bo tabel mam bardzo dużo i muszę na świeżo zrozumieć jutro jak to zrobiłeś, ale już się zaczynam cieszyć, bo to wygląda na to, o co mi chodziło dziękuję i wrócę tu jutro jak to posprawdzam
OpenOffice 4.1.3 na Windows 7
Re: Segregacja/wyszukiwanie zduplikowanych liczb
Bez formuły macierzowej też się da. Procenty możesz obliczyć według wzoru:
Gdzie:
ZakresR2 - są to twoje dane źródłowe posegregowane malejąco ($A$11:$AD$15)
0 - parametr funkcji Indeksu, podaje się tu który wiersz ma zostać zwrócony. Dzięki 0 otrzymasz w wyniku wszystkie wiersze z ZakresuR2
numer_kolumny - kolejny parametr funkcji Indeksu - podajesz ( a właściwie obliczasz) która kolumna cię interesuje. Obliczysz ją następująco:
Cała formuła będzie zatem wyglądać następująco:
W załączniku rozwiązanie.
Kod: Zaznacz cały
=A3 / ŚREDNIA( INDEKS(ZakresR2; 0; numer_kolumny )
ZakresR2 - są to twoje dane źródłowe posegregowane malejąco ($A$11:$AD$15)
0 - parametr funkcji Indeksu, podaje się tu który wiersz ma zostać zwrócony. Dzięki 0 otrzymasz w wyniku wszystkie wiersze z ZakresuR2
numer_kolumny - kolejny parametr funkcji Indeksu - podajesz ( a właściwie obliczasz) która kolumna cię interesuje. Obliczysz ją następująco:
Kod: Zaznacz cały
PODAJ.POZYCJĘ(A3; $A11:$AD11; 0) + LICZ.JEŻELI($A3:A3;A3)-1)
- - PODAJ.POZYCJĘ(A3; $A11:$AD11; 0) - podaje w której kolumnie z zakresu $A11:$AD11 znajduje się wartość z A3, Zero oznacza że ma podać pierwsze wystąpienie
- LICZ.JEŻELI($A3:A3;A3)-1 - sprawdza które to jest wystąpienie wartości z A3, tutaj poda że pierwsze dlatego aby nie zmienić wyniku z PODAJ.POZYCJI jest jeszcze -1. Formuła ta zapewni przesunięcie pozycji kolejnych wystąpień tych samych wartości
Cała formuła będzie zatem wyglądać następująco:
Kod: Zaznacz cały
=A3 / ŚREDNIA( INDEKS($A$11:$AD$15; 0; PODAJ.POZYCJĘ(A3; $A11:$AD11; 0) + LICZ.JEŻELI($A3:A3;A3)-1))
- Załączniki
-
- segregacja3.ods
- (34.1 KiB) Pobrany 183 razy
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP