W tym artykule pokażę Ci świetne zastosowanie nowego checkboxa w Excelu, jakim jest wybór danych, które chcemy zobaczyć na liście. Połączymy to z funkcjami tablicowymi, dostępnymi w nowych wersjach Excela, dzięki czemu otrzymamy dynamiczną listę wyświetlającą tylko te dane, które chce zobaczyć użytkownik.
W naszym przypadku user będzie filtrował tabelę z transakcjami zrealizowanymi przez handlowców. Tabela nazywa się tbDane i znajduje się w arkuszu TABELA:
A w arkuszu Filtr będziemy dokonywać dynamicznego filtrowania. Mam w nim na razie prostą listę z checkboxami i nazwiskami handlowców, pod kątem których będę filtrować tabelę źródłową:
Wynik filtrowania będzie formułą, którą teraz napiszemy.
1. Połączenie checkboxów z tabelą
Aby wybrać wartości z tabeli na podstawie zaznaczenia checkboxów, musimy jakoś połączyć tabelę z checkboxami. Wow, wielkie odkrycie 😊. Ale w swojej prostocie jest sednem sprawy.
Tym połączeniem będzie dodatkowa kolumna w tabeli tbDane, która w wierszu, w którym znajduje się handlowiec wybrany poprzez zaznaczony checkbox, będzie wyświetlała wartość logiczną PRAWDA, a tam, gdzie nie ma tego handlowca – FAŁSZ. Kolumnę nazwę Check_Handlowiec.
Napiszemy w tym celu prostą formułę, która wyszuka handlowca w tabelce z checkboxami w arkuszu Filtr i wyświetli wartość zwróconą przez checkbox (PRAWDA/FAŁSZ). Oto formuła:
=X.WYSZUKAJ([@Handlowiec];Filtr!$C$3:$C$6;Filtr!$B$3:$B$6)
Do tego wyszukiwania ja użyłam funkcji X.WYSZUKAJ (ang: XLOOKUP), natomiast śmiało można użyć dowolnej innej (np. WYSZUKAJ.PIONOWO, czy INDEKS I PODAJ.POZYCJĘ).
Efekt jest następujący (dla zaznaczonych checkboxów dla handlowców Grzegorz Jabłoński i Bogusława Jankowska):
2. Filtrowanie funkcją FILTRUJ (ang. FILTER)
W arkuszu Filtr (tam są checkboxy), wpiszę formułę do pierwszej komórki pod nagłówkiem, czyli B10. Formuła ta na razie jest następująca:
=FILTRUJ(tbDane;tbDane[Check_Handlowiec];tbDane)
(FILTRUJ = ang. FILTER)
Ta funkcja wyświetla rekordy tabeli tbDane, zawierające słowo PRAWDA w kolumnie Check_Handlowiec. I to jeszcze nie jest efekt, na którym nam zależy:
Formatowaniem, a raczej jego brakiem, na razie się nie przejmujemy. Bardziej interesuje nas, że zostały wyświetlone wszystkie kolumny tabeli źródłowej, a nie tylko te, które mamy wyświetlone w nagłówkach w formatce.
Aby temu zaradzić, użyjemy funkcji WYBIERZ.KOLUMNY (ang. CHOOSECOLS) w połączeniu z funkcją PODAJ.POZYCJĘ (ang. MATCH), aby namierzyć konkretną kolumnę zakresu źródłowego:
=WYBIERZ.KOLUMNY(FILTRUJ(tbDane;tbDane[Check_Handlowiec];tbDane);PODAJ.POZYCJĘ(B9:G9;tbDane[#Nagłówki];0))
Efekt jest następujący:
W sumie na tym można byłoby skończyć pisanie formuły. Ja jednak lubię, jak dane są posortowane i tutaj chciałabym, aby było posortowane po handlowcu, a zatem po kolumnie nr 6.
Wrzucę więc dotychczasową formułę do funkcji SORTUJ (ang. SORT):
=SORTUJ(WYBIERZ.KOLUMNY(FILTRUJ(tbDane;tbDane[Check_Handlowiec];tbDane);PODAJ.POZYCJĘ(B9:G9;tbDane[#Nagłówki];0));6)
Po ręcznym sformatowaniu kolumn z datami i liczbami efekt jest taki:
Voila!
Można by pokusić się tutaj o bardziej dynamiczne rozwiązanie, tzn. takie, które generuje tabelę bez określonych wcześniej nagłówków. O tym jednak napiszę Ci niebawem 😉.
https://malinowyexcel.pl/wp-content/uploads/2024/11/MalinowyExcel-20241119-Checkbox-FILTRUJ-DW.xlsx
Film na Youtubie, gdzie pokazuję powyższe rozwiązanie:
0 komentarzy