Od dawna śledzę nowości w Excelu 365 i uprzejmie donoszę, że właśnie pojawiła się u mnie kolejna nowa funkcja o nazwie LAMBDA. Jej główne zadanie to uproszczenie złożonych funkcji użytkownika Excela bez konieczności tworzenia kodu w VBA. W tym celu deklarujemy zmienne i kalkulację, a następnie umieszczamy jako nazwę zdefiniowaną. Dlaczego LAMBDA? Słowo oznacza 11. literę alfabetu greckiego – λ, ale w programowaniu nazywa się tak funkcje anonimowe.
Jak działa funkcja LAMBDA w Excelu 365?
Poznajmy funkcję na przykładzie obliczania pola powierzchni prostokąta o bokach a oraz b.
Krok 1: Zadeklaruj nazwy zmiennych
Składnia zaczyna się od własnych nazw Twoich zmiennych, których możesz podać dowolną ilość.
=LAMBDA(a;b
Krok 2: Zadeklaruj kalkulację
W ostatnim argumencie tworzymy końcowy wzór. Co ciekawe, na liście rozwijanej z podpowiedziami Excela pojawiają się nasze zmienne.
=LAMBDA(a;b;a*b)
Krok 3: Przetestuj na 1 przykładzie
Jeżeli dla powyższego wzoru wciśniemy Enter, pojawi się błąd #OBL! gdyż Excel nie wie, co ma podstawić w miejsce a i b. Dlatego testowanie funkcji odbywa się w kolejnym nawiasie tuż za nią.
Krok 4: Umieść jako nazwę zdefiniowaną
Wydaje mi się, że posługiwanie się funkcjami jak w kroku 3. nie ma większego sensu, zwłaszcza w kontekście innej omawianej już funkcji LET, która też zadziała w tym przypadku:
=LET(a;A2;b;B2;a*b)
Celem tworzenia formuły z funkcją LAMBDA jest utworzenie nazwy zdefiniowanej, która pozwoli zapisać ją jako zdefiniowaną przez użytkownika (w danym pliku) funkcję Excela.
Zatem przechodzimy do menedżera nazw (Ctrl + F3) > Nowy > Tworzymy nową nazwę (bez spacji, znaków niedozwolonych i konfliktu z innymi nazwami Excela) > w polu Odwołuje się do umieszczamy funkcję LAMBDA.
Na koniec w nowych komórkach wstawiamy funkcję Oblicz_Pole_Prostokąta.
Tworzenie nowych funkcji było dotychczas możliwe tylko z pomocą VBA lub zewnętrznych narzędzi. Dzięki LAMBDA każdy użytkownik może stworzyć własną funkcję.
Przykład 1: Oblicz, ile jest spacji w tekście
W 1. przykładzie naszym zadaniem jest stworzenie funkcji o nazwie IleSpacji, która obliczy liczbę spacji w tekście komórki. W tym celu obliczamy, ile znaków ma cały tekst, a ile tekst, w którym nie ma spacji (usuwamy je funkcją PODSTAW).
=LAMBDA(produkt;DŁ(produkt)-DŁ(PODSTAW(produkt;" ";"")))
Funkcję wstawiamy jako nazwę zdefiniowaną, dzięki czemu w Excelu mogę użyć funkcji IleSpacji.
Przykład 2: TekstPrzed
W najbliższym czasie do Excela 365 wejdą kolejne funkcje, w tym TEXTBEFORE, czyli tekst przed separatorem. Zanim to jednak nastąpi, możemy taką funkcję stworzyć sami.
Ponieważ funkcja zwraca błąd, jeśli nie znajdzie separatora, dodajmy warunek zabezpieczający z funkcją JEŻELI.BŁĄD.
=LAMBDA(tekst;separator;JEŻELI.BŁĄD(LEWY(tekst;ZNAJDŹ(separator;tekst)-1);tekst))(A2;" ")
Na koniec tworzymy funkcję TekstPrzed.
Przykład 3: Stwórz adres e-mail
W 3. przykładzie mamy listę pracowników, składających się z imienia i nazwiska.
Naszym zadaniem jest opracować funkcję, która na podstawie tych komórek stworzy od razu adres e-mail. Założenia:
- Tekst pisany małymi literami
- Tekst bez polskich znaków
- E-mail jako imię.nazwisko@skuteczneraporty.pl
- Funkcja ma być wielokrotnego użytku i ma się nazywać UtwórzEmail
W tym przykładzie wykorzystamy możliwość rozbicia pisania miary na etapy za pomocą zmiennych, czyli funkcji LET. Dla ułatwienia zmienne będę opisywać, zaczynając od _. Każda linijka to oddzielny etap. Ostatni argument funkcji LET będzie wynikiem działania całej funkcji LAMBDA.
=LAMBDA(_Pracownik; LET( _PracownikMałymi;LITERY.MAŁE(_Pracownik); _PracownikImię;TekstPrzed(_PracownikMałymi;" "); _PracownikNazwisko;FRAGMENT.TEKSTU(_PracownikMałymi;ZNAJDŹ(" ";_PracownikMałymi)+1;DŁ(_PracownikMałymi)-ZNAJDŹ(" ";_PracownikMałymi)); _PracownikEmail;_PracownikImię&"."&_PracownikNazwisko&"@skuteczneraporty.pl"; _BezĄ;PODSTAW(_PracownikEmail;"ą";"a"); _BezĆ;PODSTAW(_BezĄ;"ć";"c"); _BezĘ;PODSTAW(_BezĆ;"ę";"e"); _BezŁ;PODSTAW(_BezĘ;"ł";"l"); _BezŃ;PODSTAW(_BezŁ;"ń";"n"); _BezÓ;PODSTAW(_BezŃ;"ó";"o"); _BezŚ;PODSTAW(_BezÓ;"ś";"s"); _BezŻ;PODSTAW(_BezŚ;"ż";"z"); _BezŹ;PODSTAW(_BezŻ;"ź";"z"); _BezŹ))(A2)
Na koniec dodajemy funkcję jako nazwę zdefiniowaną i oddajemy w ręce użytkownika jako funkcję UtwórzEmail.
Podsumowanie funkcji LAMBDA
Podsumowując, nowa funkcja LAMBDA wraz z funkcją LET może stać się Twoim nowym orężem w tworzeniu zaawansowanych rozwiązań, z których później korzystać będą zwykli użytkownicy. Możesz też spodziewać się plików, w których nowoczesny użytkownik Excela 365 dostarczy Ci rozwiązanie właśnie w takiej postaci. Jeśli dodać do tego odmienioną w Excelu 365 pracę na formułach tablicowych (i zbliżające się nowe funkcje w tym zakresie), otrzymujemy pakiet funkcjonalności, obok których żaden użytkownik Excela 365 nie może przejść obojętnie.
Plik do pobrania
Tu możesz pobrać plik i przetestować nową funkcję LAMBDA w Excelu 365.