Sommario
In questa esercitazione imparerete come creare un intervallo dinamico con nome in Excel e come utilizzarlo nelle formule per includere automaticamente i nuovi dati nei calcoli.
Nell'esercitazione della scorsa settimana abbiamo analizzato diversi modi per definire un intervallo statico con nome in Excel. Un nome statico si riferisce sempre alle stesse celle, il che significa che dovrete aggiornare manualmente il riferimento all'intervallo ogni volta che aggiungete nuovi dati o rimuovete quelli esistenti.
Se si lavora con un insieme di dati in continua evoluzione, è possibile che si voglia rendere dinamico l'intervallo di nomi, in modo che si espanda automaticamente per accogliere le nuove voci o si contragga per escludere i dati rimossi. Più avanti in questo tutorial, troverete una guida dettagliata passo-passo su come fare.
Come creare un intervallo dinamico con nome in Excel
Per cominciare, costruiamo un intervallo dinamico con nome composto da una singola colonna e da un numero variabile di righe. Per farlo, eseguite i seguenti passaggi:
- Sul Formula nella scheda Nomi definiti gruppo, fare clic su Definire il nome Oppure, premere Ctrl + F3 per aprire il Name Manger di Excel e fare clic sulla voce Nuovo... pulsante.
- In ogni caso, il Nuovo nome si aprirà una finestra di dialogo in cui specificare i seguenti dettagli:
- Nel Nome digitare il nome dell'intervallo dinamico.
- Nel Ambito di applicazione impostare l'ambito del nome. Libro di lavoro (predefinito) è consigliato nella maggior parte dei casi.
- Nel Si riferisce a inserire la formula OFFSET COUNTA o INDEX COUNTA.
- Fare clic su OK. Fatto!
Nella schermata seguente, si definisce un intervallo dinamico denominato articoli che accoglie tutti celle con dati nella colonna A, ad eccezione della riga di intestazione:
Formula OFFSET per definire un intervallo dinamico di nomi in Excel
La formula generica per creare un intervallo dinamico con nome in Excel è la seguente:
OFFSET( prima_cella , 0, 0, COUNTA( colonna ), 1)Dove:
- prima_cella - il primo elemento da includere nell'intervallo nominato, ad esempio $A$2.
- colonna - un riferimento assoluto alla colonna, come $A:$A.
Al centro di questa formula, si utilizza la funzione COUNTA per ottenere il numero di celle non vuote nella colonna di interesse. Questo numero va direttamente alla funzione altezza della funzione OFFSET(reference, rows, cols, [height], [width]) che indica quante righe restituire.
A parte questo, si tratta di una normale formula di offset, dove:
- riferimento è il punto di partenza da cui si basa l'offset (prima_cella).
- file e cols sono entrambi 0, poiché non ci sono colonne o righe da compensare.
- larghezza è pari a 1 colonna.
Ad esempio, per creare un intervallo dinamico con nome per la colonna A del foglio 3, a partire dalla cella A2, si utilizza questa formula:
=OFFSET(Foglio3!$A$2, 0, 0, COUNTA(Foglio3!$A:$A), 1)
Nota: se state definendo un intervallo dinamico nel foglio di lavoro corrente, non è necessario includere il nome del foglio nei riferimenti; Excel lo farà automaticamente. Se state creando un intervallo per un altro foglio, anteponete al riferimento della cella o dell'intervallo il nome del foglio seguito dal punto esclamativo (come nell'esempio di formula precedente).
Formula INDICE per creare un intervallo dinamico con nome in Excel
Un altro modo per creare un intervallo dinamico in Excel è utilizzare COUNTA in combinazione con la funzione INDEX.
prima_cella :INDICE( colonna ,COUNTA( colonna ))Questa formula è composta da due parti:
- A sinistra dell'operatore di intervallo (:), si inserisce il riferimento iniziale codificato, come $A$2 .
- Sul lato destro, si utilizza la funzione INDEX(array, row_num, [column_num]) per trovare il riferimento finale. In questo caso, si fornisce l'intera colonna A per l'array e si utilizza COUNTA per ottenere il numero di riga (ovvero il numero di celle non inserite nella colonna A).
Per il nostro set di dati di esempio (si veda la schermata sopra), la formula è la seguente:
=$A$2:INDEX($A:$A, COUNTA($A:$A))
Poiché nella colonna A ci sono 5 celle non vuote, compresa l'intestazione della colonna, COUNTA restituisce 5. Di conseguenza, INDEX restituisce $A$5, che è l'ultima cella utilizzata nella colonna A (di solito una formula Indice restituisce un valore, ma l'operatore di riferimento la costringe a restituire un riferimento). E poiché abbiamo impostato $A$2 come punto di partenza, il risultato finale della formula è l'intervallo $A$2:$A$5.
Per testare l'intervallo dinamico appena creato, si può chiedere a COUNTA di recuperare il conteggio degli elementi:
=COUNTA(Articoli)
Se tutto è stato fatto correttamente, il risultato della formula cambierà quando si aggiungeranno o rimuoveranno elementi dall'elenco:
Nota: le due formule discusse sopra producono lo stesso risultato, ma c'è una differenza di prestazioni di cui bisogna essere consapevoli. OFFSET è una funzione volatile che viene ricalcolata a ogni modifica del foglio. Su macchine moderne e potenti e su insiemi di dati di dimensioni ragionevoli, questo non dovrebbe essere un problema. Su macchine a bassa capacità e su insiemi di dati di grandi dimensioni, questo potrebbe rallentare Excel. In questo caso, si dovrebbemeglio utilizzare la formula INDEX per creare un intervallo dinamico denominato.
Come creare un intervallo dinamico bidimensionale in Excel
Per creare un intervallo bidimensionale con nome, in cui non solo il numero di righe ma anche il numero di colonne è dinamico, utilizzare la seguente modifica della formula INDEX COUNTA:
prima_cella :INDEX($1:$1048576, COUNTA( prima_colonna ), COUNTA( prima_riga )))In questa formula, sono presenti due funzioni COUNTA per ottenere l'ultima riga non vuota e l'ultima colonna non vuota ( numero_riga e numero_colonna della funzione INDEX, rispettivamente). Nella funzione array si alimenta l'intero foglio di lavoro (1048576 righe in Excel 2016 - 2007; 65535 righe in Excel 2003 e inferiori).
Ora definiamo un altro intervallo dinamico per il nostro insieme di dati: l'intervallo denominato vendite che include i dati di vendita per 3 mesi (da gennaio a marzo) e si regola automaticamente quando si aggiungono nuovi articoli (righe) o mesi (colonne) alla tabella.
Con i dati di vendita che iniziano nella colonna B, riga 2, la formula assume la forma seguente:
=$B$2:INDEX($1:$1048576,COUNTA($B:$B),COUNTA($2:$2))
Per assicurarsi che la gamma dinamica funzioni come dovrebbe, inserire le seguenti formule da qualche parte nel foglio:
=SOMMA(vendite)
=SOMMA(B2:D5)
Come si può vedere nella schermata qui sotto, entrambe le formule restituiscono lo stesso totale. La differenza si rivela nel momento in cui si aggiungono nuove voci alla tabella: la prima formula (con l'intervallo di nomi dinamici) si aggiornerà automaticamente, mentre la seconda dovrà essere aggiornata manualmente ad ogni modifica. Questa è un'enorme differenza, no?
Come utilizzare gli intervalli di nomi dinamici nelle formule di Excel
Nelle sezioni precedenti di questa esercitazione sono già state viste un paio di semplici formule che utilizzano gli intervalli dinamici. Ora proviamo a creare qualcosa di più significativo che mostri il valore reale di un intervallo dinamico di Excel.
Per questo esempio, prenderemo la classica formula INDEX MATCH che esegue Vlookup in Excel:
INDICE ( intervallo_di_ritorno , MATCH ( valore_di_ricerca , intervallo_di_ricerca , 0))... e vedere come possiamo rendere la formula ancora più potente con l'uso di intervalli di nomi dinamici.
Come mostrato nella schermata precedente, stiamo cercando di costruire un cruscotto in cui l'utente inserisce il nome di un articolo in H1 e ottiene il totale delle vendite per quell'articolo in H2. La nostra tabella di esempio creata a scopo dimostrativo contiene solo 4 articoli, ma nei vostri fogli reali possono esserci centinaia e persino migliaia di righe. Inoltre, i nuovi articoli possono essere aggiunti su base giornaliera, quindi l'utilizzo di riferimenti non è unaperché si dovrebbe aggiornare la formula in continuazione, ma sono troppo pigro per farlo!)
Per forzare l'espansione automatica della formula, definiremo 3 nomi: 2 intervalli dinamici e 1 cella statica:
Intervallo: =$A$2:INDICE($A:$A, COUNTA($A:$A))
Intervallo_di_ritorno: =$E$2:INDICE($E:$E, COUNTA($E:$E))
Valore_di_ricerca: =$H$1
Nota: Excel aggiungerà il nome del foglio corrente a tutti i riferimenti, quindi prima di creare i nomi assicuratevi di aprire il foglio con i dati di origine.
A questo punto, iniziate a digitare la formula in H1. Quando si tratta del primo argomento, digitate alcuni caratteri del nome che desiderate utilizzare ed Excel mostrerà tutti i nomi corrispondenti disponibili. Fate doppio clic sul nome appropriato ed Excel lo inserirà subito nella formula:
La formula completata si presenta come segue:
=INDEX(intervallo_di_ritorno, MATCH(valore_di_ricerca, intervallo_di_ricerca, 0))
E funziona perfettamente!
Non appena si aggiungono nuovi record alla tabella, questi vengono subito inclusi nei calcoli, senza dover apportare alcuna modifica alla formula! E se si ha la necessità di trasferire la formula in un altro file Excel, è sufficiente creare gli stessi nomi nella cartella di lavoro di destinazione, copiare/incollare la formula e farla funzionare immediatamente.
Suggerimento: oltre a rendere le formule più durature, gli intervalli dinamici sono utili per creare elenchi a discesa dinamici.
Ecco come si creano e si utilizzano gli intervalli di nomi dinamici in Excel. Per dare un'occhiata più da vicino alle formule discusse in questa esercitazione, potete scaricare la nostra cartella di lavoro di esempio sugli intervalli di nomi dinamici di Excel. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!