Like

Załóżmy, że masz posortować tabelę według pór roku (np. kolekcję ubrań). Nie jesteś w stanie tego zrobić używając zwykłego sortowania alfabetycznego czy wg liczb. Podobnie, gdy spróbujesz ustawić spis piłkarzy według ich pozycji, od bramkarza do napastnika. W takiej sytuacji potrzebujesz własnych reguł.

Przy lekturze warto posiłkować się działającym arkuszem z pobranymi danymi.

W tym wpisie posłużę się przykładem listy polskich medalistów w boksie. Posortujemy ich według kategorii wagowych. Od najlżejszych do superciężkich. Bez patrzenia na wartości kilogramów (które zmieniały się na przestrzeni lat)

Ze stron encyklopedii PWN ściągnąłem tabelę:

Tabela jest wklejona bez żadnych formuł. Zastosowano w niej sortowanie według medali, a następnie według lat, kiedy odbyły się Igrzyska.

Ustalamy własną tabelę sortowania

Tabelę wpisuję ręcznie. W pierwszej kolumnie są nazwy kategorii, a w drugiej ich porządana kolejność:

Tabela kategorii wagowych. Jest wpisana “z palca”. Żeby być pewnym, że mamy wszystkie wartości występujące w tabeli, którą zamierzamy uporządkować, możemy użyć formuły UNIQUE.

Jeśli tabela jest krótka lub nie mamy miejsca w arkuszu, możemy tabelę pomocniczą zapisywać wewnątrz formuł:

{"papierowa"\1;"musza"\2;"kogucia"\3;"piórkowa"\4; ... }

Dodajemy pomocniczą kolumnę do sortowania

W tym celu używamy formuły VLOOKUP (WYSZUKAJ.PIONOWO), która dla wartości z kolumny E wyszuka wartość w tabeli pomocniczej. Liczba 2 w formule oznacza, że ma być wyświetlana zawartość drugiej kolumny tabeli pomocniczej.

=vlookup(E5;O4:P15;2;false) Przeszukujemy tabelę pomocniczą w poszukiwaniu wartości “półśrednia” i wyświetlamy zawartość drugiej kolumny.

Jak już ustaliliśmy wyszukiwanie, dla pojedynczej komórki, rozszerzmy działanie VLOOKUP na całą kolumnę E przy pomocy ARRAYFORMULA:

=arrayformula(vlookup(E5:E47;O4:P15;2;false)) – teraz formuła vlookup wyszukuje wartości w kolumnie pomocniczej dla wszystkich komórek – od E5 do E47.

Sortujemy według pomocniczej kolumny

Następny krok to wyświetlenie całej tabeli już posortowanej. Użyjemy do tego formuły SORT

SORT(tabela; numer kolumny; czy rosnąco)

=sort(B5:F47;5;0) – oznacza, że sortujemy tabelę B5:F47 wedle jej piątej kolumny, malejąco (0). Użycie 1 na końcu zrobiło by sortowanie rosnące.

Wyłączamy wyświetlanie pomocniczej kolumny

Nie chcemy, żeby nasza pomocnicza kolumna była widoczna dla oglądających arkusz. Możemy ją schować ręcznie korzystając z menu:

Jest jeszcze lepsza metoda, pozwalająca pozbyć się kolumny przy pomocy formuły. To ARRAY_CONSTRAIN:

ARRAY_CONSTRAIN(tabela; ile wierszy wyświetlić; ile kolumn wyświetlić)

Wsadźmy więc formułę sortującą w Array_constrain i każmy wyświetlić tylko pierwsze 4 kolumny:

=array_constrain(sort(B5:F47;5;0);1000;4) – sortuje tabelę po lewej stronie według jej piątej kolumny, ale wyświetla tylko pierwsze 4 kolumny

Łączymy wszystkie etapy w jedną formułę

Na koniec pozbędziemy się też pomocnicznej kolumny F. Skoro wygenerowaliśmy jej zawartość przy pomocy jednej formuły VLOOKUP z ARRAYFORMULA, możemy tą formułę zagnieździć w większej formule.

=array_constrain(sort({B5:E47\arrayformula(vlookup(E5:E47;O4:P15;2;false))};5;0);1000;4)

Wszystkie elementy już widzieliście:

{B5:E47\....} – to oznacza, że bierzemy tabelę B5:E47, a na prawo od niej wstawimy jeszcze jedną kolumnę (piątą).

arrayformula(vlookup(E5:E47;O4:P15;2;false)) – to formuła pobierająca dane z tabeli pomocniczej.

sort(....;5;0) – sortuje wygenerowaną zawartość według jej piątej kolumny

Arrray_constrain(....;1000;4) przycina posortowaną już tabelę, wyświetlając tylko pierwsze 4 kolumny.

Da się tabelę zaimportować od razu posortowaną

Tu trochę wychodzimy poza temat.

Jeśli importujemy tabelę z sieci przy pomocy IMPORTHTML czy z innego Arkusza przy pomocy IMPORTRANGE, możemy pociągnąć ją od razu posortowaną wedle naszych własnych kryteriów.

=array_constrain(sort( {query(importhtml(C1;”table”;1);”select * offset 2″;0)\ arrayformula(vlookup(query(importhtml(C1;”table”;1);”select Col4 offset 2″;0);Arkusz1!O4:P15;2;false))} ;5;0);1000;4)

Korzystając z IMPORTHTML ciągniemy tabelę. Używamy też formuły QUERY by pozbyć się jej nagłówków i żeby do vlookup wstawić tylko czwartą jej kolumnę.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.