Come utilizzare le funzioni di supporto LAMBDA in Microsoft Excel
Le funzioni di supporto LAMBDA di Excel sono il futuro, ma sapere quale scegliere è la vera sfida. Questa è la tua guida rapida di riferimento per abbinare la funzione al compito e creare fogli di calcolo che finalmente pensano da soli.
Questo articolo copre le cinque funzioni di supporto iterator e accumulator, disponibili in Excel per Microsoft 365, Excel per il web e nelle versioni più aggiornate delle app Excel per dispositivi mobili e tablet. SCAN è disponibile anche in Excel 2024. Non tratta le altre due funzioni di supporto che svolgono ruoli diversi: MAKEARRAY (generatore) e ISOMITTED (verificatore logico).
Il motore: Un ripasso di 30 secondi su LAMBDA
Pensa a LAMBDA come a una formula personalizzata che scrivi al volo—invece di un riferimento di cella fisso come A2*0,15, definisci un parametro:
=LAMBDA(x,x*0.15)dove :
- x è il parametro che rappresenta il valore che la funzione elaborerà.
- x*0.15 è il calcolo che vuoi che Excel esegua su quel parametro.
Da sola, questa formula non fa molto; ha bisogno di un driver per prendere quella logica e applicarla ai tuoi dati. È qui che entrano in gioco le funzioni di supporto LAMBDA.
Le tabelle di Excel non supportano i risultati in espansione. Se provi a inserire una formula di array dinamico come MAP o SCAN al loro interno, verrà generato un errore #SPILL!. Per evitare ciò, posiziona sempre le tue funzioni di supporto LAMBDA nella griglia standard.
In questa spiegazione, utilizzerò la seguente tabella—chiamata T_Gadgets—come fonte di dati e inserirò le formule nelle celle normali accanto o sopra di essa.
Gli iteratori (MAP, BYROW, BYCOL): Applicare la logica a ogni cella, riga o colonna
Gli iteratori percorrono i dati della tua tabella e applicano la logica LAMBDA a ciascun elemento.
MAPPA: Applica la logica a ogni singola cella
La sintassi | =MAP(array,LAMBDA(parametro,calcolo)) |
|---|---|
Lo scopo | Vuoi calcolare il ricavo per ogni riga in T_Gadgets e applicare contemporaneamente uno sconto del 10%. |
Il beneficio |
L'intero calcolo risiede in un unico luogo. Questo rende la tua logica più sicura, poiché le singole righe all'interno dei risultati non possono essere sovrascritte. |
Ecco la formula MAP che devi digitare nella cella F2:
=MAP(T_Gadgets[Units],T_Gadgets[Price],LAMBDA(u,p,u*p*0.9))dove :
- Array: T_Gadgets[Units],T_Gadgets[Price] sono le colonne che vuoi elaborare.
- Parametri: u,p sono i parametri—un singolo unità e un prezzo da ciascuna riga.
- Calcolo: u*p*0.9 moltiplica i due valori e applica uno sconto del 10%.
Usa MAP per combinare colonne parallele; usa BYROW (qui sotto) per trattare ogni record come un singolo pacchetto di dati.
BYROW: Ottieni un risultato per ogni riga
La sintassi | =BYROW(array,LAMBDA(riga,calcolo)) |
|---|---|
Lo scopo | Vuoi moltiplicare le Unità e il Prezzo in T_Gadgets orizzontalmente per ottenere il ricavo totale per ogni riga (giorno). |
Il beneficio |
Invece di gestire formule su centinaia di righe, gestisci una formula in una singola cella che si estende verso il basso, garantendo coerenza in tutto il tuo dataset. |
La formula BYROW per la cella F2 è la seguente:
=BYROW(T_Gadgets[[Units]:[Price]],LAMBDA(row,PRODUCT(row)))dove :
- Array: T_Gadgets[[Unità]:[Prezzo]] è l'intervallo che comprende entrambe le colonne.
- Parametro: riga rappresenta un'intera riga orizzontale di dati.
- Calcolo: PRODOTTO(riga) moltiplica ogni valore presente in quella riga.
BYCOL: Ottieni un risultato per ogni colonna
La sintassi | =BYCOL(array,LAMBDA(colonna,calcolo)) |
|---|---|
Lo scopo | Vuoi una formula unica che trovi il valore massimo per le colonne Unità e Prezzo in T_Gadgets. |
Il beneficio | Usando BYCOL in una riga sopra la tabella, crei un riepilogo dell'intestazione. Questo ti evita di dover scorrere fino a una Riga Totale in fondo a una tabella enorme e concentra la logica in un'unica cella per sicurezza e coerenza. |
Ecco la formula BYCOL per la cella A1:
=BYCOL(T_Gadgets[#Data],LAMBDA(col,IFERROR(MAX(col),"")))dove :
- Array: T_Gadgets[#Data] garantisce che la formula sia scalabile orizzontalmente. Se aggiungi una nuova colonna, la formula la rileva e si espande ulteriormente verso destra.
- Parametro: col rappresenta un'intera colonna verticale.
- Calcolo: SE.ERRORE(MAX(col),"") trova il valore più alto in ogni colonna. Il wrapper SE.ERRORE è essenziale quando si usano funzioni che generano un errore per le colonne di testo, come E e O.
Funzioni come MAX e SUM spesso restituiranno 0 per una colonna di testo. Per nascondere questo valore senza rompere l'allineamento della formula, seleziona la cella contenente lo zero e nella finestra di dialogo Formato celle (Ctrl+1), usa il formato numero personalizzato ;;; (tre punti e virgola) per rendere il valore invisibile mantenendo la funzionalità della cella.
Gli accumulatore (SCAN e REDUCE): Costruire i risultati man mano
Gli accumulatore hanno memoria, mantenendo un conteggio progressivo mentre si muovono attraverso la tua tabella.
SCAN: Crea un totale progressivo o un conteggio progressivo
La sintassi | =SCAN(valore_iniziale,array,LAMBDA(accumulatore,valore,calcolo)) |
|---|---|
Lo scopo | Vuoi vedere un totale cumulativo giornaliero della colonna Unità in T_Gadgets per monitorare l'esaurimento dell'inventario. |
Il beneficio | I totali cumulativi tradizionali come =SUM($C$2:C2) possono rompersi se si ordina o si elimina una riga. SCAN mantiene la logica in una cella, rendendola immune ai cambiamenti strutturali. |
In questo esempio, la formula SCAN per la cella F2 è la seguente:
=SCAN(0,T_Gadgets[Units],LAMBDA(acc,val,acc+val))dove :
- Valore iniziale: 0 è da dove inizia il conteggio.
- Array: T_Gadgets[Units] è la colonna che stai scansionando.
- Parametri: acc,val sono i parametri—l'accumulatore che memorizza il totale precedente e il valore della cella corrente che viene aggiunto alla memoria.
- Calcolo: acc+val è la logica che aggiorna la memoria.
RIDURRE: Ridurre un array in un unico valore finale
La sintassi | =REDUCE(valore_iniziale,array,LAMBDA(accumulatore,valore,calcolo)) |
|---|---|
Lo scopo | Vuoi sommare le Unità in T_Gadgets, ma solo per gli ordini all'ingrosso (vendite di più di 10 articoli). |
Il beneficio | REDUCE condensa la logica multistep in una singola cella, evitando SUMIF annidati, colonne di supporto o passaggi intermedi multipli. |
Nella cella F2, digita questa formula REDUCE:
=REDUCE(0,T_Gadgets[Units],LAMBDA(acc,val,IF(val>10,acc+val,acc)))dove :
- Valore iniziale: 0 è il punto di partenza per la tua somma.
- Array: T_Gadgets[Units] è la colonna che viene ridotta.
- Parametri: acc,val sono i parametri—il risultato finale accumulato che viene costruito mentre la funzione viene eseguita, e il valore della cella corrente che viene aggiunto all'accumulazione.
- Calcolo: SE(val>10,acc+val,acc) aggiunge il valore al totale solo se è maggiore di 10.
TL;DR: Quale funzione di supporto LAMBDA ti serve?
Usa questo riferimento rapido per decidere quale funzione si adatta al tuo compito:
Se vuoi... | Usa... | Tutorial completo |
|---|---|---|
Applica la logica a ogni cella | MAPPA | Collegamento |
Ottieni un risultato per ogni riga | PER RIGA | Collegamento |
Ottieni un risultato per ogni colonna | BYCOL | Collegamento |
Crea un totale progressivo | SCANSIONA | Collegamento |
Ottieni un valore riassunto | RIDURRE | Collegamento |
Fare uso di queste funzioni basate su LAMBDA trasforma il tuo workbook Excel da un calcolatore sofisticato in un ambiente di sviluppo complesso che è ufficialmente considerato un linguaggio di programmazione. Allora, cosa stai aspettando? Trova un calcolo che stai attualmente ripetendo in tutto il dataset e centralizzalo in una funzione a cella singola oggi stesso—non tornerai mai più al vecchio metodo.






