Menu

Funzione LAMBDA in Excel: funzioni personalizzate e MAP

=LAMBDA(price;price*1,2)(B2) definisce una piccola funzione con un input, price, e la chiama su B2. Salva una LAMBDA in Gestione nomi per usarla come una funzione predefinita, oppure passala a MAP, PERRIGA, SCAN e REDUCE.

Ogni foglio di questa pagina è interattivo: cambia un numero o una formula e si ricalcola.

=LAMBDA(price;price*1,2)(B2) definisce una piccola funzione con un input, price, e la chiama subito su B2: il 2.5 della penna diventa 3. Da sola è solo un =B2*1,2 più lungo. Il senso di LAMBDA è dare un nome alla funzione in Gestione nomi, così una formula lunga diventa =ADDVAT(B2), e passarla a MAP, PERRIGA e alle altre funzioni qui sotto. LAMBDA si chiama così anche in Excel italiano; la tabella mostra le formule in inglese, =LAMBDA(price,price*1.2)(B2), ma puoi scriverle anche in italiano, con il punto e virgola e la virgola decimale.

Una funzione chiamata su ogni prezzo
C2
ABC
1ItemPriceWith VAT
2Pen2.53
3Bag120144
4Lamp3542
5Mug89.6
6Desk150180
Fai clic su una cella per vederne la formula. Cambia un numero o una formula e il foglio ricalcola.In Excel in italiano: =LAMBDA(price;price*1,2)(B2)

Sintassi di LAMBDA

=LAMBDA([parameter1, parameter2, ...], calculation)
  • Ogni parameter è un nome per un input, come i nomi di LET. Ne sono ammessi fino a 253.
  • L'ultimo argomento è il calculation, che usa i parametri.
  • I valori per i parametri vanno tra parentesi subito dopo la parentesi di chiusura: =LAMBDA(x;y;x*y)(3;4) restituisce 12.

LAMBDA, MAP, PERRIGA (in inglese BYROW), PERCOL (BYCOL), SCAN, REDUCE e CREAMATRICE (MAKEARRAY) richiedono Microsoft 365, Excel 2024 o Excel per il Web. Excel 2021 ha LET ma non queste. Anche Google Sheets ha LAMBDA, e ne salva una con un nome da Dati > Funzioni denominate.

Salvare una LAMBDA come funzione personalizzata

Una LAMBDA diventa riusabile quando le dai un nome. Excel non ha bisogno di VBA né di componenti aggiuntivi per questo:

  1. Vai su Formule > Gestione nomi e fai clic su Nuovo (oppure Formule > Definisci nome).
  2. In Nome, scrivi il nome della funzione, per esempio ADDVAT.
  3. In Riferito a, inserisci la LAMBDA senza input: =LAMBDA(price;price*1,2).
  4. Fai clic su OK. Ora scrivi =ADDVAT(B2) in una cella qualsiasi della cartella di lavoro.
Name:        ADDVAT
Refers to:   =LAMBDA(price,price*1.2)
In a cell:   =ADDVAT(B2)        returns 3 when B2 is 2.5

La funzione vive solo in quella cartella di lavoro. Copia in un'altra cartella di lavoro un foglio che la usa e il nome viene con lui. Cambia la LAMBDA una volta in Gestione nomi e ogni cella che la chiama si aggiorna. Prova una LAMBDA in una cella, con gli input tra parentesi, prima di salvarla; lì un errore si vede più facilmente.

MAP: applicare una LAMBDA a ogni cella

MAP chiama la LAMBDA una volta per ogni cella di un intervallo e restituisce un intervallo della stessa forma. Qui ogni prezzo oltre 100 ha il 10% di sconto:

10% di sconto sui prezzi oltre 100
C2
ABC
1ItemPricePrice to pay
2Pen2.52.5
3Bag120108
4Lamp3535
5Mug88
6Desk150135
Fai clic su una cella per vederne la formula. Cambia un numero o una formula e il foglio ricalcola.In Excel in italiano: =MAP(B2:B6;LAMBDA(p;SE(p>100;p*0,9;p)))

La borsa (120) diventa 108 e la scrivania (150) diventa 135; gli altri prezzi passano invariati. Una sola formula in C2 copre l'intera colonna. MAP può anche percorrere fianco a fianco due intervalli della stessa dimensione: con le quantità in D2:D6, =MAP(B2:B6;D2:D6;LAMBDA(p;q;p*q)) moltiplica ogni prezzo per la sua quantità.

PERRIGA: un risultato per riga

PERRIGA passa alla LAMBDA un'intera riga alla volta, così la LAMBDA può usarci MAX, SOMMA o MEDIA. Il miglior punteggio e la media di ogni studente:

Miglior punteggio e media per studente
E2
ABCDEF
1StudentTest 1Test 2Test 3BestAverage
2Ann7285909082.3
3Ben6470587064
4Cara8892959591.7
5Dan7560818172
Fai clic su una cella per vederne la formula. Cambia un numero o una formula e il foglio ricalcola.In Excel in italiano: =PERRIGA(B2:D5;LAMBDA(r;MAX(r)))

E2 restituisce 90, 70, 95 e 81; F2 restituisce 82.3, 64, 91.7 e 72. Un semplice =MAX(B2:D5) darebbe un solo numero per l'intera tabella; PERRIGA è ciò che tiene separate le righe in una sola formula. PERCOL fa lo stesso per colonna: =PERCOL(B2:D5;LAMBDA(c;MEDIA(c))) restituisce la media di ogni test.

SCAN e REDUCE: totali progressivi

REDUCE percorre un intervallo portandosi dietro un valore, e restituisce solo il risultato finale. SCAN fa lo stesso ma restituisce ogni passaggio, e così diventa un totale progressivo in una sola formula:

Un totale progressivo e un totale
C2
ABCD
1ItemPriceRunning totalTotal
2Pen2.52.5315.5
3Bag120122.5
4Lamp35157.5
5Mug8165.5
6Desk150315.5
Fai clic su una cella per vederne la formula. Cambia un numero o una formula e il foglio ricalcola.In Excel in italiano: =SCAN(0;B2:B6;LAMBDA(total;x;total+x))

Il primo argomento, 0, è il valore di partenza. Per ogni prezzo, la LAMBDA riceve il totale fin lì e il prezzo, e restituisce il nuovo totale. C2 va da 2.5 a 122.5, 157.5, 165.5, 315.5, e D2 mostra solo il 315.5 finale. Per un totale semplice SOMMA è più facile, ma REDUCE può portarsi dietro qualsiasi cosa, come un testo che cresce o un conteggio che sale solo su alcune righe.

Dare un nome a una LAMBDA dentro una formula con LET

Una LAMBDA non ha bisogno di Gestione nomi se la usa una sola formula. Dalle un nome con LET e passa il nome a MAP o PERRIGA:

Una LAMBDA con un nome passata a MAP
C2
ABC
1ItemPriceSale price
2Pen2.52.25
3Bag120108
4Lamp3531.5
5Mug87.2
6Desk150135
Fai clic su una cella per vederne la formula. Cambia un numero o una formula e il foglio ricalcola.In Excel in italiano: =LET(discount;LAMBDA(p;p*0,9);MAP(B2:B6;discount))

Ogni prezzo ha il 10% di sconto: 2.25, 108, 31.5, 7.2 e 135. In Excel puoi anche chiamare la LAMBDA con un nome direttamente dentro LET, =LET(f;LAMBDA(x;x*2);f(5)), che restituisce 10.

Esercizio: un totale per riga con PERRIGA

Tocca a te
E2
ABCDE
1StudentTest 1Test 2Test 3Total
2Ann728590
3Ben647058
4Cara889295
5Dan756081
Fai clic su una cella per vederne la formula. Cambia un numero o una formula e il foglio ricalcola.

Tocca a te: In E2, restituisci il totale dei tre test di ogni studente, un numero per riga, con una sola formula.

Errori comuni con 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
  • #CALC! significa che una LAMBDA sta in una cella senza essere chiamata. Aggiungi gli input tra parentesi, oppure salvala in Gestione nomi e chiamala per nome.
  • #VALORE! (in inglese #VALUE!; la tabella mostra i nomi inglesi degli errori) significa che il numero di valori non corrisponde al numero di parametri. Contali da entrambi i lati.
  • #NOME? significa che la versione di Excel non ha LAMBDA, oppure che un nome salvato è scritto male. Il nome di un parametro segue le regole di LET: niente spazi, nessun nome che sembri un indirizzo di cella.
  • Una LAMBDA di PERRIGA che restituisce più valori per riga dà #CALC!. Ogni riga deve produrre un solo valore; per restituire una riga di risultati, usa invece CREAMATRICE o una normale formula matriciale.

Domande frequenti

Cos'è la funzione LAMBDA in Excel?

Trasforma una formula in una funzione con input con un nome. =LAMBDA(price;price*1,2) prende un input chiamato price e restituisce price per 1,2. Chiamala aggiungendo l'input tra parentesi, =LAMBDA(price;price*1,2)(B2), oppure salvala con un nome in Gestione nomi.

Come creo una funzione personalizzata in Excel senza VBA?

Apri Formule > Gestione nomi > Nuovo, scrivi un nome come ADDVAT e in Riferito a inserisci =LAMBDA(price;price*1,2). Fai clic su OK, e =ADDVAT(B2) funziona in ogni cella di quella cartella di lavoro.

Perché la mia LAMBDA restituisce #CALC!?

Una LAMBDA scritta in una cella senza input, come =LAMBDA(x;x*2), è una funzione che non è mai stata chiamata, quindi Excel mostra #CALC!. Aggiungi l'input tra parentesi dopo di essa, =LAMBDA(x;x*2)(5), oppure salvala in Gestione nomi.

Quali versioni di Excel hanno LAMBDA?

Microsoft 365, Excel 2024 ed Excel per il Web, insieme a MAP, PERRIGA, PERCOL, SCAN, REDUCE e CREAMATRICE. Excel 2021 ha LET ma non LAMBDA.

Cosa fa PERRIGA in Excel?

Esegue una LAMBDA una volta per ogni riga di un intervallo e restituisce un risultato per riga: =PERRIGA(B2:D5;LAMBDA(r;MAX(r))) restituisce il valore più grande di ogni riga, espanso verso il basso.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA