Modulo Fattura Dinamico – Parte 1. No Code
In questa prima parte del tutorial impariamo a rendere dinamico il template della fattura utilizzando solo strumenti nativi di Excel: tabelle, menu a tendina e funzioni di ricerca.
Il file fornito è volutamente vuoto: saremo noi a popolarlo passo dopo passo.
1.1 Creare la tabella Clienti
- Seleziona il foglio"Clienti"l’ e poi l'intervallo dei clienti (Come in figura) e premi Ctrl + T
- EN-US: Home → Format as Table
ITA: Home → Formatta come tabella - Spunta:
EN-US: “My table has headers”
ITA: “La tabella ha intestazioni”
ℹ️ Nota: A questo punto molti potrebbero chiedersi perché, nel tutorial, dedico così tanta attenzione alle differenze tra le versioni Italiano ed EN‑US di Excel.
La risposta è semplice: per motivi personali utilizzo da sempre Excel in lingua inglese.
Inoltre — e questo riguarda soprattutto chi proseguirà con la parte dedicata alla programmazione — è importante sapere che molte funzioni usate nel codice VBA o nelle formule internazionali mantengono i nomi inglesi.
Funzioni come INDEX + MATCH, VLOOKUP, XLOOKUP, SUMIF, IF, COUNTIF e molte altre, che vedremo più avanti, corrispondono in italiano a INDICE + CONFRONTA, CERCA.VERT, CERCA.X, SOMMA.SE, SE, CONTA.SE, ecc.
Conoscere entrambe le versioni permette di lavorare senza confusione, seguire documentazione internazionale, leggere codice VBA più facilmente e comprendere tutorial provenienti da tutto il mondo.
Di seguito tutte le tabelle comparative per le funzioni utilizzate nella parte NO - CODE
🔍 Funzioni di ricerca e riferimento
➗ Funzioni matematiche e di calcolo
🔢 Funzioni logiche
🔤 Funzioni di testo (utili per formattare indirizzi, codici, ecc.)
📊 Funzioni per dashboard e analisi
🧮 Funzioni utili per il gestionale (numerazione, date, ecc.)
🧩 Funzioni avanzate (per utenti moderni)
Dopo la doverosa scarrellata di tabelle comparative, andiamo direttamente al punto
3. posizionati in un punto qualsiasi dentro la tabella, nella scheda in alto seleziona Table Design o voce attinente nella versione Italiana.
4. Spostati in alto a sinistra e Rinomina la tabella in tblClienti.
1.2 Creare la tabella Prodotti
Seleziona il foglio "Prodotti"
Ripeti gli stessi passaggi e rinomina la tabella in tblProdotti.
2. Menu a tendina per selezionare il Cliente (C7)
2.1 Preparare la colonna dei nomi
Assicurati che nella tabella tblClienti la colonna "B" sia correttamente etichettata come [RagioneSociale] ,(tutto attaccato).
2.2 Impostare la convalida dati
Selezionare la riga da C7 a I9, dal menù home -> Formati selezionare unisci e centra; ripetere la stessa operazione per C8:I8 e C9:I9
- Seleziona la cella C7.
- Vai su Data → Data Validation.
- Imposta Allow: List.
- Nel campo Source inserisci:
=Clienti!$B$2:$B$27
In questo caso(motivi didattici) ho selezionato un'intervallo piccolo, ma voi estendete anche a $B$10000, 50000 o anche più, secondo necessità.
Et Voilà, come per magia cliccando sulla freccetta si estenderà l'elenco a discesa con i nomi dei Clienti! Colgo l'occasione per farvi saper che i nomi sono fittizi(pura fantasia)!
🟦 SEZIONE 3 — Recuperare i dati del Cliente
3.1 Indirizzo (C8)
Versione moderna — XLOOKUP =XLOOKUP(C7;tblClienti[RagioneSociale];tblClienti[Indirizzo];"Cliente Non trovato";0)
Versione compatibile — INDEX + MATCH=INDEX(tblClienti[Indirizzo]; MATCH(C7; tblClienti[RagioneSociale]; 0))
🟦3.2 CAP + Città + Provincia in un’unica cella (C9)
XLOOKUP -> CERCA.X (versioni Italiane)
=XLOOKUP(C7; tblClienti[RagioneSociale]; tblClienti[CAP]) & " " & XLOOKUP(C7; tblClienti[RagioneSociale]; tblClienti[Città]) & " (" & XLOOKUP(C7; tblClienti[RagioneSociale]; tblClienti[Provincia]) & ")"
INDEX + MATCH .-> INDICE +CONFRONTA (versioni Italiane)
=INDEX(tblClienti[CAP]; MATCH(C7; tblClienti[RagioneSociale]; 0)) & " " & INDEX(tblClienti[Città]; MATCH(C7; tblClienti[RagioneSociale]; 0)) & " (" & INDEX(tblClienti[Provincia]; MATCH(C7; tblClienti[RagioneSociale]; 0)) & ")"
In questa formula utilizziamo tre funzioni XLOOKUP per recuperare tre informazioni diverse dalla tabella clienti: CAP, Città e Provincia.
Ogni XLOOKUP restituisce un singolo valore, quindi per costruire una stringa completa come “38100 Trento (TN)” dobbiamo eseguire tre ricerche separate e poi concatenarle.
La chiave di ricerca è sempre la Ragione Sociale selezionata in C7.
La concatenazione con & ci permette di unire i risultati e aggiungere spazi e parentesi per ottenere un formato leggibile e professionale(Vedi figura sotto).
INDEX + MATCH -> INDICE + CONFRONTA per le versioni italiane
=INDEX(tblClienti[CAP]; MATCH(C7; tblClienti[RagioneSociale]; 0)) & " " & INDEX(tblClienti[Città]; MATCH(C7; tblClienti[Nome]; 0)) & " (" & INDEX(tblClienti[Provincia]; MATCH(C7; tblClienti[RagioneSociale]; 0)) & ")"
🔽 Recupero delle altre informazioni aggiuntive del cliente
Come fatto in precedenza, continuiamo a compilare automaticamente i dati del cliente utilizzando XLOOKUP (o INDEX + MATCH per chi usa versioni precedenti di Excel).
📥 PEC del cliente (C10)
🔧 Formula moderna (Excel 365 / 2019 / 2021)
=XLOOKUP(C7; tblClienti[RagioneSociale]; tblClienti[PEC]; 0)
🕰️ Formula compatibile (Excel 2016 e precedenti)
🧾 Codice Fiscale (C11)
🔧 Formula moderna
🕰️ Formula compatibile
🧾 Partita IVA (C12)
🔧 Formula moderna
🕰️ Formula compatibile
Se la Partita IVA contiene zeri iniziali, assicurati che la colonna sia formattata come Testo nella tabella clienti.
Come puoi vedere in figura
Selezionando semplicemente il cliente dalla casella a discesa otteniamo automaticamente tutte le informazioni collegate: indirizzo, PEC, Codice Fiscale e Partita IVA. Questo conclude la prima lezione del nostro percorso.
Nella Lezione 2 applicheremo lo stesso metodo alle righe degli articoli: effettueremo la ricerca per codice o per descrizione, recupereremo prezzo, IVA, eventuale sconto, e costruiremo tutte le formule necessarie per calcolare importi, sconti e totale IVA.
Crea il tuo sito web con Webador