W poprzednim artykule pokazywałam, jak napisać funkcję filtrującą zakres, na podstawie kryteriów wybieranych z listy rozwijanej. Wykorzystaliśmy do tego funkcję FILTRUJ (ang: FILTER) + dodatkowo funkcje SORTUJ (ang: SORT) i UNIKATOWE (ang: UNIQUE), aby stworzyć dynamiczne źródło listy rozwijanej. Wszystko pięknie działało, obsłużyliśmy nawet błąd formuły, kiedy użytkownik nic nie wybierze na liście rozwijanej.
Filtrowanym zakresem była lista faktur. Zakładając, że ta lista faktur jest potrzebna do kontrolowania płatności klientów danego handlowca – warto byłoby zobaczyć tylko nieopłacone faktury, aby wiedzieć, do którego klienta uderzać z prośbą o płatność. Poprzednie rozwiązanie jednak tego nie obsługiwało – wyświetlało wszystkie faktury handlowca, niezależnie od tego, czy są opłacone, czy nie.
Wszystkie artykuły serii Dynamiczne filtrowanie funkcją FILTRUJ:
- Dynamiczne filtrowanie funkcją FILTRUJ: jedno kryterium filtru
- Dynamiczne filtrowanie funkcją FILTRUJ: wiele kryteriów filtru
- Wyświetlanie tylko wybranych kolumn filtrowania – WYBIERZ.KOLUMNY
W tym artykule udoskonalimy to rozwiązanie i w wyniku filtru wyświetlimy tylko takie faktury, które są nieopłacone, i których termin płatności minął.
Przekładając to na język Excela, kryteria filtru będą następujące:
- Wartość kolumny Opłacone ma się równać ”NIE”
- Wartość kolumny Termin płatności ma być większa niż dzisiejsza data (DZIŚ())
Jeszcze szybko przypomnę, jak wyglądała filtrowana tabela…
… i lecimy!
Cały trik polega na tym, że zmodyfikujemy jedynie dotychczas napisaną formułę, która wygląda następująco:
=JEŻELI(B3="";tbDane;FILTRUJ(tbDane;tbDane[Handlowiec]=B3))
Zauważ, że funkcja FILTRUJ (ang: FILTER) ma w tym przypadku tylko jedno kryterium, czyli Handlowiec musi się równać wartości wybranej przez użytkownika z listy rozwijanej (polecam lekturę tego artykułu – wszystko tam po kolei opisuję).
Teraz dorzucimy do tego dwa kolejne kryteria:
- Wartość kolumny Opłacone ma się równać ”NIE”
- Wartość kolumny Termin płatności ma być większa niż dzisiejsza data (DZIŚ())
Tylko jak to zrobić w funkcji FILTRUJ?
Bardzo prosto 😉.
Posłużymy się mnożeniem warunków (więcej o tym opowiadałam podczas webinaru Logika bez funkcji logicznych). Działa to identycznie do funkcji ORAZ: wszystkie warunki na raz mają być spełnione, aby wyświetlić wynik, czyli przefiltrować zakres. Wystarczy, że jeden z nich nie będzie spełniony – wiersz, który go nie spełni, nie będzie pokazany w wyniku filtrowania.
Czyli dokładnie to, o co nam chodzi 👍.
Technicznie weźmiemy każdy warunek w osobny nawias i wszystkie nawiasy z tymi warunkami przemnożymy przez siebie. Nowe warunki nie będą zależne od użytkownika – on nadal będzie z listy wybierał tylko handlowca.
Formuła wygląda tak:
=JEŻELI(B3="";tbDane;FILTRUJ(tbDane;(tbDane[Handlowiec]=B3)*(tbDane[Opłacone]="NIE")*(tbDane[Termin płatności]<DZIŚ())))
I gotowe!
Efekt jest taki:
Kiedy piszę ten artykuł – mamy kwiecień 2024. Zobacz, że wszystkie wyfiltrowane faktury mają termin płatności mniejszy.
Czyli działa! 💪
Oczywiście – znowu można udoskonalić to rozwiązanie. Przykładowo: skoro wiadomo, że wyświetlają się tylko nieopłacone faktury, to po co w ogóle wyświetlać kolumnę Opłacone, skoro wszędzie w niej będzie tylko NIE?
Albo może nie jest nam już potrzebna informacja o ilości kupionych opakowań czy produktach – interesuje nas tylko klient, wartość faktury, termin płatności i może kilka innych kolumn. Może nawet handlowca nie potrzebujemy wyświetlać?
O tym, jak wyświetlać tylko wybrane kolumny napiszę w kolejnym artykule. A zatem: stay tunned!
I film na Youtubie, gdzie pokazuję powyższe rozwiązanie:
0 Comments