Menu

Funkcja LAMBDA w Excelu: własne funkcje, MAP i WIERSZAMI

=LAMBDA(price;price*1,2)(B2) definiuje małą funkcję z jednym wejściem, price, i wywołuje ją na B2. Zapisz LAMBDA w Menedżerze nazw, aby używać jej jak wbudowanej funkcji, albo przekaż ją do MAP, WIERSZAMI, SCAN i REDUCE.

Każdy arkusz na tej stronie działa na żywo: zmień liczbę albo formułę, a się przeliczy.

=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.

Funkcja wywołana na każdej cenie
C2
ABC
1ItemPriceWith VAT
2Pen2.53
3Bag120144
4Lamp3542
5Mug89.6
6Desk150180
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.W polskim Excelu: =LAMBDA(price;price*1,2)(B2)

Składnia funkcji LAMBDA

=LAMBDA([parameter1, parameter2, ...], calculation)
  • Każdy parameter to 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:

  1. Przejdź do Formuły > Menedżer nazw i kliknij Nowy (albo Formuły > Definiuj nazwę).
  2. W polu Nazwa wpisz nazwę funkcji, na przykład ADDVAT.
  3. W polu Odwołuje się do wpisz LAMBDA bez wejść: =LAMBDA(price;price*1,2).
  4. 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:

10% rabatu dla cen powyżej 100
C2
ABC
1ItemPricePrice to pay
2Pen2.52.5
3Bag120108
4Lamp3535
5Mug88
6Desk150135
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.

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:

Najlepszy i średni wynik ucznia
E2
ABCDEF
1StudentTest 1Test 2Test 3BestAverage
2Ann7285909082.3
3Ben6470587064
4Cara8892959591.7
5Dan7560818172
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.W polskim Excelu: =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:

Suma narastająca i suma
C2
ABCD
1ItemPriceRunning totalTotal
2Pen2.52.5315.5
3Bag120122.5
4Lamp35157.5
5Mug8165.5
6Desk150315.5
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.W polskim Excelu: =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:

Nazwana LAMBDA przekazana do MAP
C2
ABC
1ItemPriceSale price
2Pen2.52.25
3Bag120108
4Lamp3531.5
5Mug87.2
6Desk150135
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.

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

Twoja kolej
E2
ABCDE
1StudentTest 1Test 2Test 3Total
2Ann728590
3Ben647058
4Cara889295
5Dan756081
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.

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ół.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ