Ricerca nel sito web

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.

Articoli correlati