=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.
| 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)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:
- Vai su Formule > Gestione nomi e fai clic su Nuovo (oppure Formule > Definisci nome).
- In Nome, scrivi il nome della funzione, per esempio
ADDVAT. - In Riferito a, inserisci la LAMBDA senza input:
=LAMBDA(price;price*1,2). - 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:
| 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 |
=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:
| 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 |
=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:
| 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))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:
| 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 |
=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
| 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 |
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.