Petla For Each i przykład stworzenia funkcji WYSZUKAJ.PIONOWO PRO

Makra to zarówno procedury jak i funkcje, które specjalnie przez nas zaprogramowane mogą zastępować funkcje Excela. Dzięki znajomości VBA można tworzyć funkcje wzbogacone o mechanizmy, które potrzebne są konkretnie dla Twojego przypadku. W tym przykładzie stworzę funkcję, która dzięki pętli For Each stanie się funkcją WYSZUKAJ.PIONOWO PRO.

Jak stworzyć funkcję, która znajdzie wszystkie pasujące wystąpienia zamiast jednego tak jak to jest w przypadku WYSZUKAJ.PIONOWO? Mam sytuację, w której chciałbym zebrać wszystkie adresy mailowe przypisane konkretnej firmie do jednej komórki.

Otwieram edytor VBA i wstawiam nowy moduł. Funkcja zaczyna się od słowa Function i nazwy, a także argumentów, które będą podawane przez użytkownika przy jej wykorzystywaniu.

Dodaje argumenty Firma i Zakres, a także nadaję im typy jakie będą przyjmowały. Funkcja zwróci mi wynik typu String.

Aby skorzystać z pętli For Each deklaruję zmienną, która będzie obiektem przechodzącym w pętli po wskazanym zakresie.

Aby wyłącznie adresy, które pasują do wybranej firmy muszę dodać instrukcję warunkową, która sprawdzi, czy wartość komórki zgadza się z wartością argumentu Firma.

Teraz formuła wynikowa, czyli nazwa funkcji która będzie zwracała pobrane adresy e-mail. Z uwagi na to, że jest to pętla to przy każdym przejściu i dopasowaniu zawartości komórki z argumentem Firma wynik powinien się powiększać o kolejną wartość pobraną z komórki obok. Dlatego też formuła oprócz pobrania wartości z komórki obok będzie zachowywała wartość z poprzedniego przejścia. Dodam jeszcze średnik ze spacją, aby adresy były od siebie oddzielone.

Na koniec muszę pozbyć się średnika i spacji z początku mojej zwróconej wartości więc użyję funkcji tekstowej MID.

Całe makro wygląda tak:

A poniżej efekt jego działania.

Jeśli chcesz zobaczyć w jaki sposób tworzę to makro na filmie to sprawdź na YT:

Spodobał Ci się artykuł ? Udostępnij go znajomym.

Share on facebook
Share on linkedin
Share on twitter

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *