0Pricing
Excel Formulas Academy · Lezione

Iterare con MAP e REDUCE

Applicare una LAMBDA a un array per trasformare o accumulare valori

Iterare con MAP e REDUCE è una lezione Excel Formulas Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Excel Formulas Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Excel Formulas Academy include 4 lezioni in totale.

Cicli senza codice

A volte volete applicare la stessa calcolazione a ogni valore di un intervallo oppure ridurre un intero intervallo a un singolo numero. In programmazione si tratta di un ciclo. Nei fogli di calcolo moderni, MAP e REDUCE svolgono questo lavoro per voi usando LAMBDA.

  • MAP trasforma ogni elemento di un array in un nuovo elemento
  • REDUCE combina tutti gli elementi in un unico risultato accumulato

Entrambe accettano una LAMBDA che descrive cosa fare con ogni valore. Sono disponibili in Microsoft 365 e Google Sheets.

Come funziona MAP

MAP scorre un array e applica una LAMBDA a ogni elemento, producendo un nuovo array delle stesse dimensioni. Il parametro della LAMBDA riceve un elemento alla volta.

La struttura è la seguente: passate a MAP l'array, quindi una LAMBDA il cui parametro rappresenta ogni valore. MAP espande automaticamente i risultati trasformati nelle celle.

=MAP(array, LAMBDA(value, calculation))

Un primo esempio con MAP

Supponiamo che A2:A6 contenga cinque prezzi e che vogliate aumentare ciascuno del 10%. MAP applica l'aumento a tutti i valori contemporaneamente.

Il parametro p della LAMBDA rappresenta a turno ogni prezzo. MAP restituisce cinque risultati, uno per ogni cella di input, espandendoli verso il basso nella colonna.

Non dovete trascinare il quadratino di riempimento né copiare la formula. Una sola formula gestisce l'intero intervallo.

=MAP(A2:A6, LAMBDA(p, p*1.1))

MAP con due array

MAP può scorrere due array in parallelo. La LAMBDA accetta quindi due parametri, uno per ciascun array, associati posizione per posizione.

Qui moltiplichiamo le quantità in A2:A6 per i prezzi in B2:B6 per ottenere i totali delle singole righe. Il parametro q viene associato a ogni quantità e pr a ogni prezzo.

I due array devono avere le stesse dimensioni, altrimenti verrà restituito un errore.

=MAP(A2:A6, B2:B6, LAMBDA(q, pr, q*pr))

Come funziona REDUCE

REDUCE riduce un array a un singolo valore. Mantiene un accumulatore che viene aggiornato con ogni elemento.

Accetta tre elementi: un valore iniziale per l'accumulatore, l'array e una LAMBDA con due parametri, acc (il totale progressivo) e value (l'elemento corrente). A ogni passaggio, la LAMBDA restituisce il nuovo accumulatore.

=REDUCE(start, array, LAMBDA(acc, value, new_accumulator))

Un primo esempio con REDUCE

Sommiamo un intervallo con REDUCE (sì, anche SUM svolge questa operazione, ma l'esempio mostra chiaramente il meccanismo).

Iniziamo l'accumulatore da 0. Per ogni valore in A2:A6, la LAMBDA lo aggiunge ad acc. Dopo l'ultimo elemento, acc contiene il totale.

Se i valori fossero 10, 20 e 30, l'accumulatore passerebbe da 0 a 10, poi a 30 e infine a 60.

=REDUCE(0, A2:A6, LAMBDA(acc, v, acc + v))

REDUCE per un prodotto progressivo

Cambiando l'operazione, REDUCE può svolgere un compito diverso. Per moltiplicare tutti i valori tra loro, iniziate l'accumulatore da 1 e moltiplicate a ogni passaggio.

In questo modo calcolate un prodotto, utile ad esempio per i fattori di crescita composta. Il valore iniziale è importante: usate 0 per le somme e 1 per i prodotti, perché sono i rispettivi elementi neutri.

=REDUCE(1, A2:A6, LAMBDA(acc, v, acc * v))

Combinare MAP e REDUCE

Potete trasformare i dati con MAP e riepilogarli con REDUCE in un'unica formula. Un'operazione comune consiste nel sommare i quadrati di un intervallo.

Qui MAP eleva al quadrato ogni valore, quindi REDUCE li somma partendo da 0. Il risultato di MAP diventa l'array elaborato da REDUCE.

=REDUCE(0, MAP(A2:A6, LAMBDA(x, x^2)), LAMBDA(acc, v, acc + v))

MAP e REDUCE in Google Sheets

Entrambe le funzioni sono disponibili in Google Sheets con una sintassi identica. MAP applica una LAMBDA a ogni elemento; REDUCE accumula i valori usando un valore iniziale, un array e una LAMBDA con due parametri.

Sheets offre anche funzioni di supporto correlate, come SCAN, simile a REDUCE ma in grado di restituire ogni accumulatore intermedio invece del solo risultato finale. Anche Excel dispone di SCAN.

=SCAN(0, A2:A6, LAMBDA(acc, v, acc + v))

Suggerimenti e avvertenze

Ecco alcuni aspetti da ricordare:

  • In MAP, la LAMBDA deve restituire un valore per ogni elemento
  • In REDUCE, la LAMBDA deve sempre restituire il nuovo accumulatore: non dimenticatelo
  • Scegliete il valore iniziale corretto: 0 per le somme, 1 per i prodotti, una stringa vuota per concatenare il testo
  • Gli array passati insieme devono avere le stesse dimensioni

In caso di dubbi, testate prima la LAMBDA inline su un singolo valore.

Quando usare ciascuna funzione

Scegliete MAP quando volete un risultato per ogni input, ad esempio per applicare un aumento o una formattazione a ogni valore.

Scegliete REDUCE quando volete ridurre molti valori a uno, ad esempio per calcolare un totale personalizzato, una concatenazione o un valore massimo secondo una logica definita da voi.

Insieme vi permettono di esprimere cicli che i fogli di calcolo meno recenti non potevano gestire con una sola formula.

Verifica rapida

Verificate la vostra comprensione di REDUCE.

Riepilogo: cicli con MAP e REDUCE

Avete imparato a scorrere gli array con funzioni basate su LAMBDA.

  • MAP trasforma ogni elemento in un nuovo elemento e restituisce un array
  • REDUCE riduce un array a un valore usando un accumulatore
  • Scegliete un valore iniziale appropriato: 0 per le somme, 1 per i prodotti
  • MAP può associare più array; combinate MAP e REDUCE per ottenere riepiloghi efficaci in una sola riga
  • SCAN mostra ogni passaggio intermedio

Ora imparerete a salvare le vostre LAMBDA come funzioni con nome per creare formule ordinate e riutilizzabili in tutta la cartella di lavoro.

=REDUCE(0, MAP(A2:A6, LAMBDA(x, x^2)), LAMBDA(acc, v, acc + v))

Domande Frequenti

La lezione «Iterare con MAP e REDUCE» è gratuita?

Sì — il testo completo di «Iterare con MAP e REDUCE» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Excel Formulas Academy, passa a CoddyKit PRO. Il corso Excel Formulas Academy include 4 lezioni in totale.

Cosa imparerò in «Iterare con MAP e REDUCE»?

Applicare una LAMBDA a un array per trasformare o accumulare valori Eserciti Excel Formulas Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Excel Formulas Academy?

Non è richiesta alcuna esperienza precedente. Excel Formulas Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Iterare con MAP e REDUCE»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Excel Formulas Academy?

Sì. Ogni lezione Excel Formulas Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Dare un nome ai passaggi con LET
  2. Definire funzioni personalizzate con LAMBDA
  3. Iterare con MAP e REDUCE
  4. Formule più chiare con LAMBDA denominati
← Torna a Excel Formulas Academy