Poziome filtrowanie kolumn w Excelu

Jeśli nie jesteś całkiem początkującym użytkownikiem, to zapewne już zauważyłeś, że 99% wszystkiego w Excelu jest przystosowane do pracy z tabelami pionowymi, gdzie przez kolumny przechodzą parametry lub atrybuty (pola), a informacje o obiektach lub zdarzeniach znajdują się w liniach. Tabele przestawne, sumy częściowe, kopiowanie formuł za pomocą dwukrotnego kliknięcia – wszystko jest dostosowane specjalnie do tego formatu danych.

Nie ma jednak żadnych reguł bez wyjątków i dość regularnie jestem pytany, co zrobić, jeśli w pracy natknę się na tabelę o poziomej orientacji semantycznej lub tabelę, w której wiersze i kolumny mają taką samą wagę:

Poziome filtrowanie kolumn w Excelu

A jeśli Excel nadal wie, jak sortować w poziomie (za pomocą polecenia Dane – Sortuj – Opcje – Sortuj kolumny), to sytuacja z filtrowaniem jest gorsza – po prostu nie ma wbudowanych narzędzi do filtrowania kolumn, a nie wierszy w Excelu. Tak więc, jeśli staniesz przed takim zadaniem, będziesz musiał wymyślić obejścia o różnym stopniu złożoności.

Metoda 1. Nowa funkcja FILTR

Jeśli korzystasz z nowej wersji programu Excel 2021 lub subskrypcji programu Excel 365, możesz skorzystać z nowo wprowadzonej funkcji FILTER (FILTR), który może filtrować dane źródłowe nie tylko według wierszy, ale także kolumn. Do działania funkcja ta wymaga pomocniczego poziomego jednowymiarowego wiersza tablicy, w którym każda wartość (PRAWDA lub FAŁSZ) określa, czy pokazujemy, czy odwrotnie, ukrywamy następną kolumnę w tabeli.

Dodajmy następujący wiersz nad naszą tabelą i wpiszmy w nim status każdej kolumny:

Poziome filtrowanie kolumn w Excelu

  • Powiedzmy, że zawsze chcemy wyświetlać pierwszą i ostatnią kolumnę (nagłówki i sumy), więc dla nich w pierwszej i ostatniej komórce tablicy ustawiamy wartość = TRUE.
  • Dla pozostałych kolumn zawartość odpowiednich komórek będzie formułą, która sprawdza warunek, którego potrzebujemy, za pomocą funkcji И (ORAZ) or OR (OR). Na przykład, że suma mieści się w zakresie od 300 do 500.

Po tym pozostaje tylko korzystać z funkcji FILTER aby wybrać kolumny, powyżej których nasza tablica pomocnicza ma wartość TRUE:

Poziome filtrowanie kolumn w Excelu

Podobnie możesz filtrować kolumny według podanej listy. W takim przypadku funkcja pomoże COUNTIF (LICZ.JEŻELI), który sprawdza liczbę wystąpień nazwy następnej kolumny z nagłówka tabeli na liście dozwolonych:

Poziome filtrowanie kolumn w Excelu

Metoda 2. Stół przestawny zamiast zwykłego

Obecnie Excel ma wbudowane filtrowanie poziome według kolumn tylko w tabelach przestawnych, więc jeśli uda nam się przekonwertować naszą oryginalną tabelę na tabelę przestawną, możemy skorzystać z tej wbudowanej funkcjonalności. Aby to zrobić, nasza tabela źródłowa musi spełniać następujące warunki:

  • mieć „poprawny” jednowierszowy wiersz nagłówka bez pustych i scalonych komórek – w przeciwnym razie nie będzie działać budowanie tabeli przestawnej;
  • nie zawierają duplikatów w etykietach wierszy i kolumn – „zwiną się” w podsumowaniu na listę tylko unikalnych wartości;
  • zawierają tylko liczby z zakresu wartości (na przecięciu wierszy i kolumn), ponieważ tabela przestawna na pewno zastosuje do nich jakąś funkcję agregującą (suma, średnia itp.) i to nie zadziała z tekstem

Jeśli wszystkie te warunki są spełnione, to aby zbudować tabelę przestawną, która wygląda jak nasza oryginalna tabela, należy ją (oryginalną) rozwinąć z tabeli przestawnej do tabeli płaskiej (znormalizowanej). Najłatwiej to zrobić, korzystając z dodatku Power Query — zaawansowanego narzędzia do przekształcania danych wbudowanego w program Excel od 2016 r. 

Są to:

  1. Przekształćmy tabelę w „inteligentne” dynamiczne polecenie Strona główna – Formatuj jako tabelę (Strona główna — Formatuj jako tabelę).
  2. Ładowanie do dodatku Power Query za pomocą polecenia Dane – Z tabeli / Zakres (Dane – Z tabeli / Zakres).
  3. Filtrujemy wiersz z sumami (podsumowanie będzie miało własne sumy).
  4. Kliknij prawym przyciskiem myszy nagłówek pierwszej kolumny i wybierz Rozwiń inne kolumny (Unpivot inne kolumny). Wszystkie niewybrane kolumny są przeliczane na dwie – nazwisko pracownika i wartość jego wskaźnika.
  5. Filtrowanie kolumny z sumami, które trafiły do ​​kolumny Atrybut.
  6. Budujemy tabelę przestawną zgodnie z otrzymaną tabelą płaską (znormalizowaną) za pomocą polecenia Strona główna — Zamknij i załaduj — Zamknij i załaduj w… (Strona główna — Zamknij i załaduj — Zamknij i załaduj do…).

Teraz możesz skorzystać z możliwości filtrowania kolumn dostępnych w tabelach przestawnych – zwykłe znaczniki wyboru przed nazwami i elementami Filtry podpisu (Filtry etykiet) or Filtry według wartości (Filtry wartości):

Poziome filtrowanie kolumn w Excelu

I oczywiście przy zmianie danych będziesz musiał zaktualizować nasze zapytanie i podsumowanie skrótem klawiszowym Ctrl+inny+F5 lub zespół Dane – Odśwież wszystko (Dane — Odśwież wszystko).

Metoda 3. Makro w VBA

Wszystkie poprzednie metody, jak łatwo zauważyć, nie są dokładnym filtrowaniem – nie ukrywamy kolumn z oryginalnej listy, ale tworzymy nową tabelę z danym zestawem kolumn z oryginalnej. Jeśli wymagane jest filtrowanie (ukrywanie) kolumn w danych źródłowych, potrzebne jest zasadniczo inne podejście, a mianowicie makro.

Załóżmy, że chcemy filtrować w locie kolumny tam, gdzie nazwa menedżera w nagłówku tabeli odpowiada masce określonej w żółtej komórce A4, na przykład zaczyna się na literę „A” (czyli uzyskaj „Anna” i „Artur " w rezultacie). 

Podobnie jak w pierwszej metodzie, najpierw implementujemy pomocniczy wiersz zakresu, gdzie w każdej komórce nasze kryterium będzie sprawdzane formułą, a wartości logiczne TRUE lub FALSE zostaną wyświetlone odpowiednio dla widocznych i ukrytych kolumn:

Poziome filtrowanie kolumn w Excelu

Następnie dodajmy proste makro. Kliknij prawym przyciskiem myszy kartę arkusza i wybierz polecenie Źródło (Kod źródłowy). Skopiuj i wklej następujący kod VBA do okna, które się otworzy:

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$4" Then For Each cell In Range("D2:O2") If cell = True Then cell.EntireColumn.Hidden = False Else cell.EntireColumn.Hidden = True End If Następna komórka End If End Sub  

Jego logika jest następująca:

  • Ogólnie jest to procedura obsługi zdarzeń Arkusz_Zmiana, tzn. to makro zostanie automatycznie uruchomione po każdej zmianie dowolnej komórki w bieżącym arkuszu.
  • Odwołanie do zmienionej komórki zawsze będzie znajdować się w zmiennej cel.
  • Najpierw sprawdzamy, czy użytkownik zmienił dokładnie komórkę z kryterium (A4) – robi to operator if.
  • Wtedy zaczyna się cykl Dla każdego… iterować po szarych komórkach (D2:O2) z wartościami wskaźnika TRUE / FALSE dla każdej kolumny.
  • Jeżeli wartość następnej szarej komórki to TRUE (prawda), to kolumna nie jest ukryta, w przeciwnym razie ją ukrywamy (właściwość Ukryty).

  •  Dynamiczne funkcje tablicowe z Office 365: FILTER, SORT i UNIC
  • Tabela przestawna z wielowierszowym nagłówkiem za pomocą dodatku Power Query
  • Czym są makra, jak je tworzyć i używać

 

Dodaj komentarz