EXCEL · ARRAY DINAMICI · FORMULE
Le formule dinamiche hanno cambiato un aspetto importante di Excel: una formula non deve più necessariamente produrre il risultato di una singola cella. Può restituire più valori che si espandono automaticamente in un intervallo di celle adiacenti. Il cambiamento interessante, però, non è soltanto tecnico: sposta il modo di ragionare dalla singola cella all’insieme di dati.
Dal trascinamento alla propagazione automatica
Nel modello tradizionale una stessa logica viene spesso replicata lungo righe o colonne. È un approccio semplice e leggibile, ma porta con sé un rischio operativo molto concreto: una formula può non essere stata trascinata abbastanza, può essere stata sovrascritta oppure può differire accidentalmente dalle righe vicine.
Con una formula ad espansione la logica rimane in una sola cella e il risultato occupa automaticamente l’intervallo necessario. Non serve quindi ricordarsi di propagare manualmente la formula quando il numero di righe cambia. Per me questo è uno dei vantaggi più importanti: non soltanto meno lavoro, ma anche un punto di manutenzione unico.
Una precisazione terminologica. Quel risultato non è necessariamente una Tabella Excel strutturata. È più corretto parlare di intervallo espanso o di matrice restituita dalla formula. La distinzione può sembrare formale, ma evita di confondere due oggetti che in Excel hanno comportamenti diversi.
Pensare per trasformazioni
Il passo successivo è smettere di vedere ogni funzione come un’operazione isolata. Le formule moderne diventano davvero interessanti quando vengono composte: un insieme di dati viene filtrato, ordinato, rimodellato e poi passato alla trasformazione successiva.
=LET(
dati; Tabella1;
validi; FILTER(dati; Tabella1[Stato]="OK");
ordinati; SORT(validi; 3; -1);
TAKE(ordinati; 10)
)
L’esempio non è interessante perché usa FILTER, SORT o TAKE. Lo è perché rende esplicita una sequenza: selezionare, ordinare, limitare. Il valore sta nella composizione della logica, non nella singola funzione.
Lo stesso vale per funzioni come VSTACK, HSTACK, TOCOL o TOROW: più che conoscerle una per una, conta capire che permettono di combinare e rimodellare intervalli senza tornare necessariamente al modello “una formula per riga”.
Nota sui nomi delle funzioni. Excel non è sempre uniforme nella localizzazione delle funzioni più recenti. In alcune versioni italiane alcuni nomi rimangono in inglese, in altre risultano tradotti. Negli esempi conviene quindi verificare il nome effettivamente disponibile nella propria installazione di Microsoft 365.
LET: evitare duplicazioni prima ancora che migliorare la leggibilità
Uno dei motivi principali per cui considero utile LET è la possibilità di definire una volta sola un’espressione e riutilizzarne il risultato. Questo evita duplicazioni all’interno della formula e, quando l’espressione è costosa, evita anche di ricalcolarla più volte.
=LET(
datiValidi; FILTER(Tabella1; Tabella1[Stato]="OK");
...
)
In questo caso FILTER(Tabella1; Tabella1[Stato]="OK") viene definita una volta sola come datiValidi. La leggibilità migliora, ma per me è una conseguenza: il primo vantaggio è aver eliminato codice duplicato e aver dato un’identità a un risultato intermedio.
Più struttura non significa debug più semplice
LET rende una formula più strutturata, ma sposta parte della complessità sul debug. I nomi definiti al suo interno sono locali alla formula e il classico uso di F9 non permette di ispezionarli con la stessa immediatezza di una normale sottoespressione.
Quando devo verificare un passaggio, spesso sostituisco temporaneamente il risultato finale della LET con il nome intermedio che voglio osservare. In formule più complesse può essere perfino più efficace usare per qualche minuto celle di appoggio e ricomporre tutto solo quando la logica è stabile.
È un buon promemoria: una formula più elegante non è automaticamente più semplice da sviluppare, spiegare o mantenere.
La soluzione dipende anche da chi la usa
La possibilità tecnica di costruire una formula compatta non significa che quella sia sempre la soluzione migliore. L’utenza conta almeno quanto la funzionalità.
- Per un utente occasionale, alcuni passaggi visibili possono essere preferibili a una formula molto densa.
- Per un utente Excel esperto, una formula dinamica ben strutturata può essere più trasparente di una macro nascosta.
- Per un analista, poter modificare rapidamente la logica nel foglio può essere un vantaggio importante.
- Per un processo operativo usato da molte persone, può essere più sicuro nascondere la complessità dietro un’interfaccia controllata.
Per questo non considero gli array dinamici una destinazione obbligatoria. Sono uno strumento molto potente quando il problema, la dimensione dei dati e il profilo degli utenti lo rendono appropriato.
Quando sceglierei un’altra strada
Se la trasformazione diventa lunga, coinvolge molti dati, richiede join articolati o deve diventare un processo ripetibile e verificabile, Power Query può essere più naturale. Se invece serve guidare l’utente, automatizzare operazioni sul workbook o integrare il processo nell’interfaccia di Excel, VBA o un add-in possono essere più adatti.
La domanda quindi non è “quanto si può fare con una formula?”, ma “qual è il livello giusto in cui mettere questa logica, per questo problema e per queste persone?”.
Principio: gli array dinamici non eliminano le celle. Spostano il livello di ragionamento dalla singola cella all’insieme di dati.