Un file Excel spesso nasce in modo molto semplice: alcuni dati, qualche formula, un risultato.
Poi cresce.
Arrivano nuovi casi da gestire, eccezioni, percorsi di rete, soglie, anagrafiche, query Power Query, macro VBA. A quel punto il problema non è necessariamente che il file sia diventato grande. Il problema è che dati, configurazione, logica e risultati iniziano a confondersi.
Una buona struttura non richiede di trasformare Excel in un’applicazione complessa. Spesso basta separare chiaramente alcuni ruoli.
Quattro cose diverse
In un workbook sufficientemente evoluto distinguerei almeno quattro livelli:
- Dati — ciò che il file deve elaborare: transazioni, letture, file importati, movimenti, registrazioni.
- Parametri e anagrafiche — descrivono il contesto in cui la logica deve operare: periodo di riferimento, percorsi, codici ammessi, associazioni, soglie, eccezioni.
- Logica — trasforma e interpreta i dati attraverso formule, Power Query, VBA o una combinazione dei tre.
- Output — ciò che interessa davvero all’utente: un risultato, una quadratura, un elenco di anomalie, un file da produrre.
La distinzione sembra quasi ovvia. Nella pratica, però, molti problemi di manutenzione nascono proprio quando questi quattro elementi vengono mescolati.
Un esempio molto piccolo
Supponiamo di dover controllare dei movimenti relativi a un determinato periodo.
Potremmo scrivere direttamente nelle formule:
2026 09 1000 C:\Dati\Produzione\
Il file funziona.
Ma quei valori non appartengono alla logica. Sono parametri della logica.
È molto diverso poter scrivere concettualmente:
AnnoRiferimento MeseRiferimento SogliaControllo CartellaDati
A quel punto una modifica del contesto non richiede più una modifica dell’algoritmo.
È la stessa distinzione che abbiamo incontrato parlando di intervalli nominati e di tabelle di configurazione, ma vista a un livello più generale.
La logica dovrebbe cambiare meno dei dati
Questo, per me, è uno dei segnali più utili per capire se un workbook è ben progettato.
- I dati possono cambiare ogni giorno.
- I parametri possono cambiare ogni mese.
- Le anagrafiche possono acquisire nuove righe.
La logica dovrebbe cambiare molto meno frequentemente.
Se l’arrivo di un nuovo codice, di una nuova cartella o di una nuova eccezione obbliga a modificare una formula, una query o una macro, vale la pena chiedersi se quel nuovo caso non avrebbe dovuto essere rappresentato come dato.
Non significa rendere tutto configurabile. Significa evitare di incorporare nella logica ciò che appartiene al dominio dei dati.
Anche l’output va separato
C’è un’altra separazione che trovo importante.
Il foglio che l’utente consulta non dovrebbe necessariamente essere il luogo in cui avvengono tutte le elaborazioni.
Un output può essere molto semplice:
| Stato | Elemento | Anomalia |
|---|---|---|
| OK | A | |
| KO | B | Codice non riconosciuto |
| OK | C |
Dietro quelle tre colonne possono esserci importazioni, join, controlli e trasformazioni molto più articolati.
È una buona cosa.
La complessità interna non deve necessariamente diventare complessità dell’interfaccia.
Formule, Power Query e VBA possono condividere la stessa architettura
Separare i ruoli aiuta anche a evitare una falsa contrapposizione tra strumenti.
- una tabella Excel può contenere l’anagrafica;
- un intervallo nominato può contenere il periodo scelto dall’utente;
- Power Query può leggere entrambi e trasformare i dati;
- una formula può effettuare un controllo immediato sull’output;
- VBA può orchestrare aggiornamento, esportazione e gestione dei file.
Non è necessario scegliere uno strumento per tutto.
L’importante è che ciascuno abbia un compito comprensibile.
Una struttura che rende visibili le responsabilità
Non esiste una suddivisione dei fogli valida universalmente, ma trovo utile che anche i nomi rendano riconoscibile la struttura.
Per esempio:
0. Config 1. Input 2. Anagrafiche 3. Elaborazione 4. Controlli 5. Output
Non è la numerazione a essere importante.
È il fatto che, aprendo il file, sia possibile capire rapidamente dove si configura, dove entrano i dati, dove avvengono i controlli e dove si leggono i risultati.
Lo stesso principio può essere applicato alle query Power Query e alle procedure VBA.
La separazione aiuta anche a diagnosticare gli errori
Quando qualcosa non torna, una struttura del genere permette di formulare domande più precise.
- Il dato di partenza è corretto?
- Il parametro utilizzato è quello previsto?
- L’anagrafica contiene il valore?
- La trasformazione ha prodotto il risultato atteso?
- L’output lo rappresenta correttamente?
Senza questa separazione, spesso l’unica domanda possibile è: “Perché il file non funziona?”
Ed è una domanda molto più difficile.
Non serve costruire un framework
C’è anche un rischio opposto: progettare una struttura talmente astratta da rendere difficile un file che avrebbe potuto essere semplice.
Un workbook usato una volta per confrontare due elenchi probabilmente non ha bisogno di sei livelli, una configurazione centralizzata e una convenzione di naming.
La struttura acquista valore quando il file deve essere riutilizzato, modificato, affidato ad altri o mantenuto nel tempo.
Anche qui, quindi, la complessità della soluzione dovrebbe essere proporzionata al problema.
Un file Excel può avere un’architettura
La parola architettura può sembrare eccessiva parlando di un foglio di calcolo.
Ma non implica necessariamente classi, framework o grandi applicazioni.
Significa semplicemente decidere quali parti del sistema hanno responsabilità diverse e quali dipendenze vogliamo creare tra loro.
Quando questa distinzione è chiara, Excel rimane Excel, ma il file smette gradualmente di essere un insieme di celle che funzionano per diventare uno strumento che può evolvere senza dover essere continuamente riscritto.