Vai al contenuto

Come utilizzare la funzione LET su Excel

    COME_UTILIZZARE_FUNZIONE_LET_MICROSOFT_EXCEL_MARCOFILOCAMO_MARGINE_PERCENTUALE_CON_LET_E_SENZA_LET

    In questa guida vediamo come utilizzare la funzione LET su Excel e perchè sia così importante per rendere i nostri file, specialmente quelli con formule complesse, più facili da leggere per l'utente finale.

    LET permette di dichiarare delle variabili all'interno delle formule ed è una funzione fondamentale per lavorare bene con Excel 365, dato che cambia il nostro modo di pensare le formule: non più solo come output, ma anche definendo i vari passaggi logici che ci portano alla conclusione.

    L'altro vantaggio è una questione di velocità, dato che la variabile viene calcolata una volta sola. Se evitiamo di calcolare 10 volte la stessa operazione, Excel sarà sicuramente più rapido nel completare i processi che stiamo creando. Questo è particolarmente rilevante se alcuni riferimenti sono riutilizzati varie volte nella formula - mano a mano che diventi forte con Excel, ti accorgerai di casi dove hai diverse combinazioni ripetute e ottimizzare con LET ti verrà naturale.

    COME_UTILIZZARE_FUNZIONE_LET_MICROSOFT_EXCEL_MARCOFILOCAMO_MARGINE_PERCENTUALE_CON_LET_E_SENZA_LET

    LET è una funzione cardine per chiunque voglia migliorare il proprio livello su Excel e io la uso massivamente in tutti i miei file di lavoro, così come su numerose guide che trovi sempre su questo sito. LET non può essere utilizzata in versioni fino a Excel 2019 essendo disponibile dalla versione Excel 2021 in poi - in linea di massima ti consiglio di passare alla versione 365, se possibile, che ha tutti gli aggiornamenti più recenti.

    Che cosa fa la funzione LET su Excel

    La funzione LET su Excel ci permette di dichiarare delle variabili che utilizzeremo poi all'interno della nostra formula. Se hai basi di programmazione (incluso VBA), non avrai problemi a utilizzarla da subito sui tuoi file, dato che è affine a quanto vedi in numerosi altri ambienti di sviluppo. Per chi non abbia mai utilizzato queste variabili, ragioniamo sul perchè possa esserci utile.

    Excel prova ad aiutarci così, quando iniziamo a digitare:

    =LET(nome1;nome_valore1;calcolo_o_nome2;[nome_valore2;calcolo_o_nome3];….

    Va da sè che non sia proprio chiarissimo cosa dobbiamo fare. Tuttavia, l'indicazione nella scrittura ci sta chiarendo degli aspetti che saranno poi rilevanti quando andremo a utilizzarla massivamente:

    • Nome1 ci sta dicendo che dobbiamo scegliere un nome per la nostra prima variabile
    • Nome_valore1 ci segnala che dobbiamo indicare a che cosa corrisponda, questo Nome1
    • Calcolo_o_nome2 indica due strade: o c'è un calcolo, che termina la nostra formula, oppure possiamo dichiarare una nuova variabile chiamata Nome2 e andare avanti

    Immaginiamo di avere due valori, ad esempio prezzo in D4 e IVA in E4. Vogliamo moltiplicarli. Una possibile formula sarebbe:

    =(D4)*(1+E4)

    Un'altra possibile formula, con LET, sarebbe così:

    =LET(prezzo;D4;
    iva;E4;
    prezzo_ivato;prezzo*(1+iva);
    prezzo_ivato)

    Il risultato è lo stesso, ma la spiegazione dei singoli passaggi è decisamente più comprensibile.

    Approfondiamo il tema con un esempio. Proviamo a calcolare il margine percentuale, con e senza LET.

    Come utilizzare LET su Excel con un esempio pratico

    COME_UTILIZZARE_FUNZIONE_LET_MICROSOFT_EXCEL_MARCOFILOCAMO_MARGINE_PERCENTUALE_CON_LET_E_SENZA_LET

    Vediamo come utilizzare LET su Excel con un esempio pratico. In questo caso calcoliamo il margine percentuale, che si calcola come (prezzo-costo)/(prezzo). Se non usassimo LET, avremmo:

    =(B3-C3)/B3

    Il risultato è corretto, perchè abbiamo (100-30)/(100) che fa effettivamente 0.7, ovvero 70%.

    COME_UTILIZZARE_FUNZIONE_LET_MICROSOFT_EXCEL_MARCOFILOCAMO_CALCOLO_COMPLESSO_SENZA_LET

    Il problema di comprensione si pone chiaramente, però, se apriamo la formula da una zona a caso del nostro foglio di lavoro. Ci risulta infatti impossibile capire cosa sia B3 e che cosa sia C3, non avendo alcun riferimento per comprendere più nel dettaglio il funzionamento della formula.

    Vediamo come sarebbe invece il risultato se utilizzassimo LET al meglio:

    =LET(prezzo;B6;
    costo;C6;
    margine;B6-C6;
    margine_percentuale;margine/prezzo;
    margine_percentuale)

    Ora, la formula è decisamente più lunga, quindi sacrifichiamo un po' di lunghezza - guadagnandone però in comprensione dato che:

    • Prezzo è B6
    • Costo è C6
    • Margine non è altro che la differenza fra Prezzo e Costo
    • Margine_percentuale è Margine/Prezzo

    Anche dovessimo aprire questa formula altrove sul foglio, pur non cogliendo appieno il funzionamento (non sappiamo questo margine a che cosa corrisponda) riusciremmo comunque a capire che stiamo parlando di margine percentuale e non di altri KPI.

    Vediamo ora come LET può aiutarci se vogliamo trovare i topX clienti in un database.

    Come usare LET su Excel con un esempio complesso

    COME_UTILIZZARE_FUNZIONE_LET_MICROSOFT_EXCEL_MARCOFILOCAMO_CALCOLO_COMPLESSO_SENZA_LET

    Vediamo come utilizzare LET su Excel con un esempio più complesso, che è riferito alla creazione di una statistica con i nostri top clienti. Abbiamo un database in una tabella chiamata TBL, dove ci sono due colonne: Cliente e Prezzo.

    Vogliamo, in un colpo solo, ottenere i nostri topX clienti, permettendo all'utente di selezionare, da una cella, il valore - che potrebbe quindi essere 5,10,25.

    Vediamo la formula senza utilizzare LET:

    =INCLUDI(DATI.ORDINA(STACK.ORIZ(UNICI(TBL[CLIENTE]);
    SOMMA.PIÙ.SE(TBL[PREZZO];TBL[CLIENTE];UNICI(TBL[CLIENTE])));2;-1);C2)

    In questo caso, la formula è difficilmente leggibile:

    • Partiamo dal cuore della formula. Capiamo che ci sono dei valori impilati con STACK, ma notiamo come TBL[CLIENTE] sia ripetuto per ben 3 volte. 2 volte con UNICI, una volta in solitaria. Stiamo impilando, in orizzontale, i valori univoci dei clienti e poi il totale di prezzo per ciascuno di loro, creando un array di due colonne
    • Vediamo che i dati sono ordinati per il totale di prezzo in ordine decrescente (2 è la colonna del prezzo, -1 vuol dire decrescente) è all'interno di un flusso che non sembra chiarissimo
    • Alla fine, INCLUDI ci dice che prenderemo solo un certo numero di righe relative a C2. Quindi stiamo prendendo due colonne con i valori univoci dei clienti e il loro prezzo, li stiamo mettendo in ordine per la colonna del prezzo in ordine decrescente, poi prendiamo solo un numero di righe specificato dall'utente. Visualizzare il risultato di questa formula prima di calcolarla è tutt'altro che semplice

    Premetto che l'utilizzo di LET è fondamentale, ma starà a te scegliere esattamente come declinare questa funzione sui tuoi file. Puoi andare estremamente nello specifico, ad esempio indicando un testo per ogni colonna che utilizzerai. Puoi essere più veloce, magari inserendolo solo per alcuni passaggi particolarmente complessi. Io uso spesso parole inglesi all'interno dei parametri di LET per distanziarli dalle formule in italiano, ma anche qui hai massima scelta di modificare come preferisci le logiche.

    COME_UTILIZZARE_FUNZIONE_LET_MICROSOFT_EXCEL_MARCOFILOCAMO_STEP_CALCOLO_COMPLESSO

    Ti mostro come lo farei io se dovessi spiegare ai membri del mio team il procedimento, magari da usare come un punto di partenza per creare poi una LAMBDA dedicata. Rivediamo il ragionamento, passo passo:

    • Per prima cosa, vogliamo avere i valori univoci dei nostri clienti
    • Poi, vogliamo calcolare il totale di prezzo per i valori univoci dei nostri clienti
    • A questo punto, creiamo un array di due colonne con i valori univoci
    • Dobbiamo poi ordinare questo array per la seconda colonna in ordine decrescente
    • Infine, selezioniamo solo un numero di righe corrispondenti alla topX che ci interessa
    COME_UTILIZZARE_FUNZIONE_LET_MICROSOFT_EXCEL_MARCOFILOCAMO_CALCOLO_COMPLESSO_LET

    Vediamo la formula a step, nello specifico:

    =LET(clienti;UNICI(TBL[CLIENTE]);
    totale;SOMMA.PIÙ.SE(TBL[PREZZO];TBL[CLIENTE];clienti);
    stack;STACK.ORIZ(clienti;totale);
    stack_sort;DATI.ORDINA(stack;2;-1);
    stack_finale;INCLUDI(stack_sort;C2);
    stack_finale)

    A questo punto, valutiamo i singoli passaggi:

    • Clienti sono i clienti univoci del nostro database
    • Totale ci restituisce il totale di prezzo per i singoli clienti univoci, che infatti sono richiamati come "clienti" e non più con UNICI
    • Stack ci indica che stiamo creando un array orizzontale con due colonne, clienti e totale. Avremo quindi CARUSO | 306.469 € e così via, per tutti i nostri clienti
    • Stack_sort ordina il nostro stack, segnalando in maniera chiara che lo stiamo modificando per ordinarlo secondo il totale, che è la seconda colonna del nostro array
    • Stack_finale è l'ultimo passaggio, dove, con INCLUDI, prenderemo solo un certo numero di righe che ci servono

    A questo punto, scriviamo nuovamente stack_finale perchè è il valore che vogliamo restituire. Questo passaggio è fondamentale e in passato lo avevo sottovalutato, ma conviene sempre esplicitare l'ultimo calcolo anzichè terminare la formula. Ti faccio un esempio:

    =LET(clienti;UNICI(TBL[CLIENTE]);
    totale;SOMMA.PIÙ.SE(TBL[PREZZO];TBL[CLIENTE];clienti);
    stack;STACK.ORIZ(clienti;totale);
    stack_sort;DATI.ORDINA(stack;2;-1);
    INCLUDI(stack_sort;C2))

    Questa formula restituisce esattamente lo stesso risultato precedente, ma non stiamo dichiarando che è il nostro stack finale. Quindi, preferisco sempre la prima opzione, anche per chiarire all'utente che è un flusso definito che ha termine proprio con questo parametro.

    Quando utilizzare la funzione LET su Excel

    Ti potresti chiedere quando abbia senso utilizzare la funzione LET su Excel. Io, come dicevo anche in altri punti della guida, la utilizzo praticamente in tutti i miei file, dato che aiuta molto la comprensione non solo di terzi, ma anche la mia.

    LET può salvarci in diversi casi:

    • Se devi far utilizzare ad altri un file creato da te, questi avranno già una spiegazione chiara e dettagliata dei singoli passaggi. Volendo, c'è sempre ChatGPT per farsi spiegare i passaggi, ma con LET sarà tutto sicuramente più facile
    • Se devi riprendere in mano un tuo file a distanza di tempo, LET ti aiuterà a rientrare più velocemente nei concetti che hai utilizzato quando creavi il file. A me è capitato varie volte di dover aprire nuovamente file creati mesi prima e LET è stato immensamente d'aiuto per rivedere i processi e, eventualmente, migliorali
    • Se vuoi migliorare su Excel, LET è un passaggio fondamentale. Questo perchè, quando crei formule senza LET, rischi di ripetere numerose volte le stesse operazioni e il risultato sono formule complesse, difficili da digerire per una persona terza e che mancano di struttura. Se invece ragioni con LET, queste stesse formule, che in un primo momento possono sembrare complesse e poco performanti, diventeranno invece molto più chiare e ti creeranno una "muscle memory" da sfruttare anche su altri file di lavoro
    • Se vuoi imparare come creare le funzioni personalizzate di Excel, cioè le funzioni LAMBDA, non puoi non utilizzare LET. Questo perchè LET è il primo passaggio necessario per definire quali siano le informazioni che l'utente dovrà inserire e dichiararle correttamente ti aiuterà nel creare funzioni facilmente utilizzabili anche da altri. Senza LET, LAMBDA rischia di essere un buco nero con formule lente e complesse, che potrebbero essere completamente diverse se spezzate in diversi tronconi con LET

    In sintesi - non ci sono motivi, se non di compatibilità con versioni pre-2021, per non utilizzare LET. L'unico tema da approfondire, che vediamo a breve, è quando le variabili possono interferire con le funzioni native di Excel.

    Quando usare LET può creare dei problemi su Excel

    LET non dovrebbe creare problemi quando stiamo lavorando con Excel, dato che è un aiuto importante per le nostre formule. Esistono però dei casi limite da considerare, in particolare se lavori con la versione italiana. Su questo tema mi sono confrontato in passato con il mio amico Roberto Mensa (Excel MVP che ti consiglio di seguire perchè crea dei grafici incredibili) e, grazie anche ad altri esperti come Bo Rydobon, abbiamo scoperto quanto segue.

    Come sai, nella versione italiana di Excel ci sono numerose funzioni con il punto (.), come CERCA.X / SOMMA.PIÙ.SE/ A.COL / STACK.ORIZ / DATI.ORDINA e così via. Di per sè, questo non è un problema. Questo diventa un problema se, come variabile di LET, utilizziamo quanto si trova prima del punto all'interno di una formula.

    Ti consiglio quindi di non utilizzare variabili come a, stack, somma, cerca etc. La formula funzionerà lo stesso, ma solo se, in un calcolo successivo, non utilizzi una delle formule che presentino, come inizio della formula, la stessa combinazione di caratteri. In sostanza - se vuoi chiamare una variabile stack (come hai visto anche sopra), lo puoi fare. Ma se avessi poi voluto utilizzare questa variabile con funzioni quali STACK.ORIZ o STACK.VERT, Excel mi avrebbe restituito un errore.

    Vediamolo con un esempio pratico. Mettiamo di prendere i top X valori di prezzo del nostro database con questa formula:

    =GRANDE(TBL[PREZZO];
    SEQUENZA(B1))

    Inseriamo in B1 i valori, che sono 5 in questo caso, e terminiamo la nostra formula.

    Mettiamo però di volerli vedere in diverse righe, anzichè in colonna - da un lato, potremmo usare questa formula e saremmo a posto:

    =GRANDE(TBL[PREZZO];
    SEQUENZA(;B1))

    COME_UTILIZZARE_FUNZIONE_LET_MICROSOFT_EXCEL_MARCOFILOCAMO_CASO_LIMITE

    Assumiamo però di volerlo fare utilizzando una funzione che si chiama A.RIGA, che ci permette di portare tutti i valori su una riga sola:

    =LET(values;B3#;
    row;A.RIGA(values);
    row)

    Riprendiamo tutti i valori di B3# e, semplicemente, li ribaltiamo in riga. Nessun problema.

    COME_UTILIZZARE_FUNZIONE_LET_MICROSOFT_EXCEL_MARCOFILOCAMO_POTENZIALI_PROBLEMI

    Proviamo però a dichiarare, anzichè values, la variabile a:

    =LET(a;B3#;
    row;A.RIGA(a);
    row)

    La formula esplode e non ci restituirà alcun risultato. Questo aspetto è parecchio frustrante perchè inaspettato, ma succede perchè la variabile impatta sulle singole funzioni: Excel non riesce a distinguere variabile e funzione, quindi non può effettuare il calcolo.

    Tienilo a mente perchè, quando copi formule da altre lingue, può capitare di vedere spesso LET(a;...). Ecco, in quei casi, la stessa formula, anche se tradotta correttamente a livello di singole funzioni, ad esempio con XLOOKUP che diventa CERCA.X, potrebbe non funzionare sul tuo file di lavoro.

    COME_UTILIZZARE_FUNZIONE_LET_MICROSOFT_EXCEL_MARCOFILOCAMO_CARATTERI_SPECIALI

    L'altro aspetto cui fare attenzione è ad esempio creare variabili del tipo =LET(sum_%;...). Usando alcuni caratteri speciali, LET non restituirà alcun risultato, dicendoci invece che "Il primo argomento della funzione DEFINISCI deve essere un nome valido". Anche in questo caso il problema è probabilmente legato a qualche contrasto con le funzioni, ma se usi solo valori testuali che dichiarano chiaramente le variabili, non dovresti avere problemi particolari.

    A parte questi, che sono davvero dei casi limite, non ci sono davvero motivi per non provare a utilizzare LET sui tuoi file di lavoro - e se ci provi, fammi sapere come va!

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *