=LAMBDA(price;price*1,2)(B2) definiuje małą funkcję z jednym wejściem, price, i od razu wywołuje ją na B2: 2.5 za długopis zmienia się w 3. Sama w sobie to tylko dłuższe =B2*1,2. Sens LAMBDA polega na tym, żeby nadać funkcji nazwę w Menedżerze nazw, tak że długa formuła staje się =ADDVAT(B2), i przekazywać ją do MAP, WIERSZAMI i innych funkcji opisanych niżej. LAMBDA ma w polskim Excelu tę samą nazwę. Tabela pokazuje formułę po angielsku, =LAMBDA(price,price*1.2)(B2), ale możesz w niej wpisywać formuły także po polsku, ze średnikami.
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | With VAT |
| 2 | Pen | 2.5 | 3 |
| 3 | Bag | 120 | 144 |
| 4 | Lamp | 35 | 42 |
| 5 | Mug | 8 | 9.6 |
| 6 | Desk | 150 | 180 |
=LAMBDA(price;price*1,2)(B2)Składnia funkcji LAMBDA
=LAMBDA([parameter1, parameter2, ...], calculation)
- Każdy
parameterto nazwa wejścia, jak nazwy w LET. Dozwolonych jest do 253. - Ostatni argument to
calculation, obliczenie, które używa parametrów. - Wartości parametrów wpisujesz w nawiasie zaraz za nawiasem zamykającym:
=LAMBDA(x;y;x*y)(3;4)zwraca 12.
LAMBDA, MAP, WIERSZAMI (BYROW), BYCOL, SCAN, REDUCE i MAKEARRAY wymagają Microsoft 365, Excela 2024 albo Excela dla sieci Web. Excel 2021 ma LET, ale nie ma tych funkcji. Arkusze Google też mają LAMBDA i zapisują ją pod nazwą przez Dane > Funkcje nazwane.
Zapisanie LAMBDA jako własnej funkcji
LAMBDA staje się wielokrotnego użytku, gdy nadasz jej nazwę. Excel nie potrzebuje do tego VBA ani dodatku:
- Przejdź do Formuły > Menedżer nazw i kliknij Nowy (albo Formuły > Definiuj nazwę).
- W polu Nazwa wpisz nazwę funkcji, na przykład
ADDVAT. - W polu Odwołuje się do wpisz LAMBDA bez wejść:
=LAMBDA(price;price*1,2). - Kliknij OK. Teraz wpisz
=ADDVAT(B2)w dowolnej komórce skoroszytu.
Name: ADDVAT
Refers to: =LAMBDA(price,price*1.2)
In a cell: =ADDVAT(B2) returns 3 when B2 is 2.5
Funkcja istnieje tylko w tym skoroszycie. Skopiuj arkusz, który jej używa, do innego skoroszytu, a nazwa przejdzie razem z nim. Zmień LAMBDA raz w Menedżerze nazw, a zaktualizuje się każda komórka, która ją wywołuje. Zanim zapiszesz LAMBDA, przetestuj ją w komórce z wejściami w nawiasie; błąd łatwiej tam zobaczyć.
MAP: LAMBDA dla każdej komórki
MAP wywołuje LAMBDA raz dla każdej komórki zakresu i zwraca zakres o tym samym kształcie. Tutaj każda cena powyżej 100 dostaje 10% rabatu:
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | Price to pay |
| 2 | Pen | 2.5 | 2.5 |
| 3 | Bag | 120 | 108 |
| 4 | Lamp | 35 | 35 |
| 5 | Mug | 8 | 8 |
| 6 | Desk | 150 | 135 |
Torba (120) zmienia się w 108, a biurko (150) w 135; pozostałe ceny przechodzą bez zmian. Jedna formuła w C2 obejmuje całą kolumnę. MAP może też przejść równolegle przez dwa zakresy tej samej wielkości: z ilościami w D2:D6 =MAP(B2:B6,D2:D6,LAMBDA(p,q,p*q)) (postać angielska) mnoży każdą cenę przez jej ilość.
WIERSZAMI: jeden wynik na wiersz
WIERSZAMI (BYROW) przekazuje LAMBDA cały wiersz naraz, więc LAMBDA może użyć na nim MAX, SUMA albo ŚREDNIA. Najlepszy i średni wynik każdego ucznia:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Student | Test 1 | Test 2 | Test 3 | Best | Average |
| 2 | Ann | 72 | 85 | 90 | 90 | 82.3 |
| 3 | Ben | 64 | 70 | 58 | 70 | 64 |
| 4 | Cara | 88 | 92 | 95 | 95 | 91.7 |
| 5 | Dan | 75 | 60 | 81 | 81 | 72 |
=WIERSZAMI(B2:D5;LAMBDA(r;MAX(r)))E2 zwraca 90, 70, 95 i 81; F2 zwraca 82,3, 64, 91,7 i 72. Zwykłe =MAX(B2:D5) dałoby jedną liczbę dla całej tabeli; to WIERSZAMI pozwala trzymać wiersze osobno w jednej formule. BYCOL robi to samo dla kolumn: =BYCOL(B2:D5;LAMBDA(c;ŚREDNIA(c))) zwraca średnią każdego testu.
SCAN i REDUCE: sumy narastające
REDUCE przechodzi przez zakres i niesie ze sobą wartość, zwracając tylko wynik końcowy. SCAN robi to samo, ale zwraca każdy krok, co daje sumę narastającą w jednej formule:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Item | Price | Running total | Total |
| 2 | Pen | 2.5 | 2.5 | 315.5 |
| 3 | Bag | 120 | 122.5 | |
| 4 | Lamp | 35 | 157.5 | |
| 5 | Mug | 8 | 165.5 | |
| 6 | Desk | 150 | 315.5 |
=SCAN(0;B2:B6;LAMBDA(total;x;total+x))Pierwszy argument, 0, to wartość początkowa. Dla każdej ceny LAMBDA dostaje dotychczasową sumę i cenę, a zwraca nową sumę. C2 przechodzi przez 2,5, 122,5, 157,5, 165,5, 315,5, a D2 pokazuje tylko końcowe 315,5. Do zwykłej sumy prostsza jest SUMA, ale REDUCE może nieść cokolwiek, na przykład rosnący tekst albo licznik, który rośnie tylko w niektórych wierszach.
Nazwanie LAMBDA wewnątrz jednej formuły przez LET
LAMBDA nie potrzebuje Menedżera nazw, jeśli używa jej tylko jedna formuła. Nazwij ją przez LET i przekaż nazwę do MAP albo WIERSZAMI:
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | Sale price |
| 2 | Pen | 2.5 | 2.25 |
| 3 | Bag | 120 | 108 |
| 4 | Lamp | 35 | 31.5 |
| 5 | Mug | 8 | 7.2 |
| 6 | Desk | 150 | 135 |
Każda cena dostaje 10% rabatu: 2,25, 108, 31,5, 7,2 i 135. W Excelu nazwaną LAMBDA możesz też wywołać bezpośrednio wewnątrz LET, =LET(f;LAMBDA(x;x*2);f(5)), co zwraca 10.
Ćwiczenie: suma w każdym wierszu z WIERSZAMI
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Student | Test 1 | Test 2 | Test 3 | Total |
| 2 | Ann | 72 | 85 | 90 | |
| 3 | Ben | 64 | 70 | 58 | |
| 4 | Cara | 88 | 92 | 95 | |
| 5 | Dan | 75 | 60 | 81 |
Twoja kolej: W E2 zwróć jedną formułą sumę trzech testów każdego ucznia, po jednej liczbie na wiersz.
Częste błędy LAMBDA
=LAMBDA(x,x*2) #CALC! defined but never called
=LAMBDA(x,x*2)(5) 10
=LAMBDA(x,y,x*y)(3) #VALUE! two parameters, one value
=LAMBDA(x,x*2)(3,4) #VALUE! one parameter, two values
W polskim Excelu te błędy to #OBL! i #ARG!, a formuły zapisujesz ze średnikami: =LAMBDA(x;y;x*y)(3).
- #OBL! (po angielsku
#CALC!) oznacza, że LAMBDA stoi w komórce i nie jest wywołana. Dopisz wejścia w nawiasie albo zapisz ją w Menedżerze nazw i wywołuj po nazwie. - #ARG! (
#VALUE!) oznacza, że liczba wartości nie zgadza się z liczbą parametrów. Policz je po obu stronach. - #NAZWA? (
#NAME?) oznacza, że ta wersja Excela nie ma LAMBDA albo zapisana nazwa jest źle napisana. Nazwa parametru podlega zasadom LET: bez spacji i bez nazw, które wyglądają jak adres komórki. - LAMBDA w WIERSZAMI, która zwraca kilka wartości na wiersz, daje #OBL!. Każdy wiersz musi dać jedną wartość; aby zwrócić wiersz wyników, użyj zamiast tego MAKEARRAY albo zwykłej formuły tablicowej.
Najczęściej zadawane pytania
Czym jest funkcja LAMBDA w Excelu?
Zamienia formułę w funkcję z nazwanymi wejściami. =LAMBDA(price;price*1,2) przyjmuje jedno wejście o nazwie price i zwraca price razy 1,2. Wywołasz ją, dopisując wejście w nawiasie, =LAMBDA(price;price*1,2)(B2), albo zapisz ją pod nazwą w Menedżerze nazw.
Jak utworzyć własną funkcję w Excelu bez VBA?
Otwórz Formuły > Menedżer nazw > Nowy, wpisz nazwę, na przykład ADDVAT, a w polu Odwołuje się do wpisz =LAMBDA(price;price*1,2). Kliknij OK, a =ADDVAT(B2) zadziała w każdej komórce tego skoroszytu.
Dlaczego moja LAMBDA zwraca #OBL!?
LAMBDA wpisana w komórkę bez wejść, na przykład =LAMBDA(x;x*2), to funkcja, której nigdy nie wywołano, więc Excel pokazuje #OBL!. Dopisz za nią wejście w nawiasie, =LAMBDA(x;x*2)(5), albo zapisz ją w Menedżerze nazw.
Które wersje Excela mają LAMBDA?
Microsoft 365, Excel 2024 i Excel dla sieci Web, razem z MAP, WIERSZAMI, BYCOL, SCAN, REDUCE i MAKEARRAY. Excel 2021 ma LET, ale nie ma LAMBDA.
Co robi funkcja WIERSZAMI w Excelu?
Uruchamia LAMBDA raz dla każdego wiersza zakresu i zwraca jeden wynik na wiersz: =WIERSZAMI(B2:D5;LAMBDA(r;MAX(r))) zwraca największą wartość każdego wiersza, rozlaną w dół.