Sommario
In questa esercitazione faremo luce su uno degli abitanti più misteriosi dell'universo di Excel: la funzione OFFSET.
In poche parole, la formula OFFSET restituisce un riferimento a un intervallo che è sfalsato rispetto a una cella iniziale o a un intervallo di celle di un numero specifico di righe e colonne.
La funzione OFFSET può essere un po' complicata da capire, quindi prima diamo una breve spiegazione tecnica (farò del mio meglio per mantenerla semplice) e poi tratteremo alcuni dei modi più efficienti per usare OFFSET in Excel.
Funzione OFFSET di Excel - sintassi e usi di base
La funzione OFFSET di Excel restituisce una cella o un intervallo di celle che si trova a un determinato numero di righe e di colonne da una cella o da un intervallo dato.
La sintassi della funzione OFFSET è la seguente:
OFFSET(riferimento, righe, colonne, [altezza], [larghezza])I primi 3 argomenti sono obbligatori e gli ultimi 2 sono facoltativi. Tutti gli argomenti possono essere riferimenti ad altre celle o risultati restituiti da altre formule.
Sembra che Microsoft abbia fatto un buon sforzo per dare un significato ai nomi dei parametri e che questi diano un'idea di ciò che si dovrebbe specificare in ciascuno di essi.
Argomenti richiesti:
- Riferimento - una cella o un intervallo di celle adiacenti da cui si basa l'offset. Si può considerare come il punto di partenza.
- Righe - Il numero di righe da spostare dal punto di partenza, verso l'alto o verso il basso. Se righe è un numero positivo, la formula si sposta al di sotto del riferimento di partenza, mentre se è un numero negativo si sposta al di sopra del riferimento di partenza.
- Cols - Il numero di colonne che la formula deve spostare dal punto di partenza. Oltre alle righe, le colonne possono essere positive (a destra del riferimento iniziale) o negative (a sinistra del riferimento iniziale).
Argomenti facoltativi:
- Altezza - il numero di righe da restituire.
- Larghezza - il numero di colonne da restituire.
Entrambi gli argomenti di altezza e larghezza devono essere sempre numeri positivi. Se uno dei due viene omesso, l'impostazione predefinita è l'altezza o la larghezza di riferimento .
Nota: OFFSET è una funzione volatile e può rallentare il foglio di lavoro. La lentezza è direttamente proporzionale al numero di celle ricalcolate.
Illustriamo ora la teoria con un esempio della formula OFFSET più semplice.
Esempio di formula OFFSET di Excel
Ecco un esempio di una semplice formula OFFSET che restituisce un riferimento di cella basato su un punto di partenza, righe e colonne specificate dall'utente:
=OFFSET(A1,3,1)
La formula indica a Excel di prendere la cella A1 come punto di partenza (riferimento), quindi di spostarsi di 3 righe verso il basso (argomento righe) e di 1 colonna verso sinistra (argomento cols). Come risultato, questa formula OFFSET restituisce il valore nella cella B4.
L'immagine a sinistra mostra il percorso della funzione e la schermata a destra dimostra come si può utilizzare la formula OFFSET su dati reali. L'unica differenza tra le due formule è che la seconda (a destra) include un riferimento a una cella (E1) nell'argomento righe. Ma poiché la cella E1 contiene il numero 3, nell'argomento righe della prima formula compare esattamente lo stesso numero,entrambi restituirebbero un risultato identico: il valore in B4.
Formule OFFSET di Excel - cose da ricordare
- La funzione OFFSET di Excel non sposta effettivamente alcuna cella o intervallo, ma restituisce solo un riferimento.
- Quando una formula OFFSET restituisce un intervallo di celle, gli argomenti righe e colonne si riferiscono sempre alla cella in alto a sinistra dell'intervallo restituito.
- L'argomento di riferimento deve includere una cella o un intervallo di celle adiacenti, altrimenti la formula restituirà l'errore #VALORE!
- Se le righe e/o le colonne specificate spostano un riferimento oltre il bordo del foglio di calcolo, la formula OFFSET di Excel restituirà l'errore #REF!
- La funzione OFFSET può essere utilizzata all'interno di qualsiasi altra funzione di Excel che accetti tra i suoi argomenti un riferimento a una cella o a un intervallo.
Ad esempio, se si prova a utilizzare la formula =OFFSET(A1,3,1,1,3)
da solo, darà un errore #VALORE! poiché l'intervallo da restituire (1 riga, 3 colonne) non rientra in una singola cella. Tuttavia, se lo si incorpora nella funzione SOMMA, come in questo caso:
=SOMMA(OFFSET(A1,3,1,1,3))
La formula restituirà la somma dei valori in un intervallo di 1 riga per 3 colonne che si trova 3 righe sotto e 1 colonna a destra della cella A1, ovvero il totale dei valori nelle celle B4:D4.
Perché si usa OFFSET in Excel?
Ora che sapete cosa fa la funzione OFFSET, potreste chiedervi: "Perché preoccuparsi di usarla?" Perché non scrivere semplicemente un riferimento diretto come B4:D4?
La formula OFFSET di Excel è molto utile per:
Creazione di intervalli dinamici Riferimenti come B1:C4 sono statici, cioè si riferiscono sempre a un determinato intervallo. Tuttavia, alcune operazioni sono più facili da eseguire con intervalli dinamici, in particolare quando si lavora con dati che cambiano, ad esempio in un foglio di lavoro in cui ogni settimana viene aggiunta una nuova riga o colonna.
Ottenere l'intervallo dalla cella di partenza A volte non si conosce l'indirizzo effettivo dell'intervallo, ma si sa che inizia da una certa cella. In questi casi, l'uso di OFFSET in Excel è la soluzione giusta.
Come utilizzare la funzione OFFSET in Excel - esempi di formule
Spero che non vi siate annoiati con tutta questa teoria. Comunque, ora arriviamo alla parte più interessante: l'uso pratico della funzione OFFSET.
Funzioni OFFSET e SOMMA di Excel
L'esempio di cui abbiamo parlato poc'anzi mostra l'uso più semplice di OFFSET & SUM. Ora guardiamo queste funzioni da un altro punto di vista e vediamo cos'altro possono fare.
Esempio 1. Una formula SOMMA / OFFSET dinamica
Quando si lavora con fogli di lavoro aggiornati in continuazione, si può desiderare una formula SOMMA che selezioni automaticamente tutte le nuove righe aggiunte.
Supponiamo di avere un'origine dati simile a quella che si vede nella schermata qui sotto. Ogni mese viene aggiunta una nuova riga proprio sopra la formula SOMMA e, naturalmente, si desidera includerla nel totale. Nel complesso, ci sono due possibilità: aggiornare ogni volta manualmente l'intervallo nella formula SOMMA o far sì che la formula OFFSET lo faccia per voi.
Poiché la prima cella dell'intervallo da sommare sarà specificata direttamente nella formula SOMMA, dovrete solo decidere i parametri per la funzione OFFSET di Excel, che otterrà l'ultima cella dell'intervallo:
Riferimento
- la cella che contiene il totale, B9 nel nostro caso.Righe
- la cella immediatamente superiore al totale, che richiede il numero negativo -1.Cols
- è 0 perché non si vuole cambiare la colonna.
Ecco quindi lo schema della formula SUM / OFFSET:
=SOMMA( prima cella :(OFFSET( cella con totale , -1,0)Modificata per l'esempio precedente, la formula si presenta come segue:
=SOMMA(B2: [OFFSET(B9, -1, 0)])
E come dimostrato dalla schermata seguente, funziona perfettamente:
Esempio 2. Formula OFFSET di Excel per la somma delle ultime N righe
Nell'esempio precedente, supponiamo di voler conoscere l'importo dei bonus degli ultimi N mesi piuttosto che il totale generale. Inoltre, vogliamo che la formula includa automaticamente tutte le nuove righe aggiunte al foglio.
Per questo compito, utilizzeremo OFFSET di Excel in combinazione con le funzioni SUM e COUNT / COUNTA:
=SOMMA(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
o
=SOMMA(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))
I seguenti dettagli possono aiutare a comprendere meglio le formule:
Riferimento
- l'intestazione della colonna di cui si vogliono sommare i valori, la cella B1 in questo esempio.Righe
- per calcolare il numero di righe da sfalsare, si usa la funzione COUNT o COUNTA.COUNT restituisce il numero di celle della colonna B che contengono numeri, da cui si sottraggono gli ultimi N mesi (il numero è la cella E1) e si aggiunge 1.
Se si sceglie la funzione COUNTA, non è necessario aggiungere 1, poiché questa funzione conta tutte le celle non vuote e una riga di intestazione con un valore di testo aggiunge una cella in più di cui la nostra formula ha bisogno. Si noti che questa formula funzionerà correttamente solo su una struttura di tabella simile - una riga di intestazione seguita da righe con numeri. Per layout di tabella diversi, potrebbe essere necessario apportare alcune modifiche alla funzioneFormula OFFSET/COUNTA.
Cols
- il numero di colonne da sfalsare è zero (0).Altezza
- il numero di righe da sommare è specificato in E1.Larghezza
- 1 colonna.
Uso della funzione OFFSET con MEDIA, MAX, MIN
Allo stesso modo in cui abbiamo calcolato i bonus degli ultimi N mesi, è possibile ottenere una media degli ultimi N giorni, settimane o anni e trovare i loro valori massimi o minimi. L'unica differenza tra le formule è il nome della prima funzione:
=MEDIA(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MAX(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MIN(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
Il vantaggio principale di queste formule rispetto alle consuete MEDIA(B5:B8) o MAX(B5:B8) è che non sarà necessario aggiornare la formula ogni volta che la tabella di origine viene aggiornata. Indipendentemente dal numero di nuove righe aggiunte o eliminate nel foglio di lavoro, le formule OFFSET faranno sempre riferimento al numero specificato di ultime celle (le più basse) della colonna.
Formula OFFSET di Excel per creare un intervallo dinamico
Utilizzata insieme a COUNTA, la funzione OFFSET consente di creare un intervallo dinamico che può rivelarsi utile in molti scenari, ad esempio per creare elenchi a discesa aggiornabili automaticamente.
La formula di OFFSET per una gamma dinamica è la seguente:
=OFFSET(Nome_Foglio!$A$1, 0, 0, COUNTA(Nome_Foglio!$A:$A), 1)
Nel cuore di questa formula, si utilizza la funzione COUNTA per ottenere il numero di celle non vuote nella colonna di destinazione. Questo numero va all'argomento height di OFFSET che indica quante righe restituire.
A parte questo, si tratta di una normale formula di offset, in cui:
- Riferimento è il punto di partenza da cui si basa l'offset, ad esempio Foglio1!$A$1.
- Righe e
Cols
sono entrambi 0 perché non ci sono colonne o righe da compensare. - Larghezza è di 1 colonna.
Nota: se si sta creando un intervallo dinamico nel foglio corrente, non è necessario includere il nome del foglio nei riferimenti; Excel lo farà automaticamente durante la creazione dell'intervallo con nome. Altrimenti, assicurarsi di includere il nome del foglio seguito dal punto esclamativo come in questo esempio di formula.
Una volta creato un intervallo dinamico con nome con la formula OFFSET di cui sopra, è possibile utilizzare la convalida dei dati per creare un elenco a discesa dinamico che si aggiorna automaticamente non appena si aggiungono o rimuovono elementi dall'elenco di origine.
Per una guida dettagliata, passo dopo passo, sulla creazione di elenchi a discesa in Excel, consultate le seguenti esercitazioni:
- Creare elenchi a discesa in Excel - statici, dinamici, da un'altra cartella di lavoro
- Creare un elenco a discesa dipendente
Excel OFFSET & VLOOKUP
Come tutti sanno, le semplici ricerche verticali e orizzontali vengono eseguite rispettivamente con le funzioni VLOOKUP o HLOOKUP. Tuttavia, queste funzioni hanno troppe limitazioni e spesso inciampano in formule di ricerca più potenti e complesse. Pertanto, per eseguire ricerche più sofisticate nelle tabelle di Excel, è necessario cercare alternative come INDEX, MATCH e OFFSET.
Esempio 1. Formula OFFSET per un Vlookup a sinistra in Excel
Una delle limitazioni più note della funzione VLOOKUP è l'impossibilità di guardare alla sua sinistra, il che significa che VLOOKUP può restituire solo un valore a destra della colonna di ricerca.
Nella nostra tabella di esempio sono presenti due colonne: i nomi dei mesi (colonna A) e i bonus (colonna B). Se si desidera ottenere un bonus per un determinato mese, questa semplice formula VLOOKUP funzionerà senza problemi:
=VLOOKUP(B1, A5:B11, 2, FALSE)
Tuttavia, non appena si scambiano le colonne della tabella di ricerca, si ottiene immediatamente l'errore #N/A:
Per gestire una ricerca sul lato sinistro, è necessaria una funzione più versatile che non si preoccupi di dove risiede la colonna di ritorno. Una delle possibili soluzioni è l'uso di una combinazione di funzioni INDEX e MATCH. Un altro approccio è l'uso di OFFSET, MATCH e ROWS:
OFFSET( tabella_di_ricerca , MATCH( valore_di_ricerca , OFFSET( tabella_di_ricerca , 0, offset_col_lookup , VOCI( tabella_di_ricerca ), 1) ,0) -1, offset_col_ritorno , 1, 1)Dove:
- Offset_col_guardato - è il numero di colonne da spostare dal punto di partenza alla colonna di ricerca.
- Offset_col_ritorno - è il numero di colonne da spostare dal punto di partenza alla colonna di ritorno.
Nel nostro esempio, la tabella di ricerca è A5:B9 e il valore di ricerca si trova nella cella B1, l'offset della colonna di ricerca è 1 (poiché stiamo cercando il valore di ricerca nella seconda colonna (B), dobbiamo spostarci di una colonna a destra rispetto all'inizio della tabella), l'offset della colonna di ritorno è 0 poiché stiamo restituendo i valori dalla prima colonna (A):
=OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, RIGHE(A5:B9), 1) ,0) -1, 0, 1, 1)
So che la formula sembra un po' goffa, ma funziona :)
Esempio 2. Come effettuare una ricerca superiore in Excel
Come nel caso di VLOOKUP che non può guardare a sinistra, anche la sua controparte orizzontale - la funzione HLOOKUP - non può guardare verso l'alto per restituire un valore.
Se è necessario eseguire la scansione di una riga superiore alla ricerca di corrispondenze, la formula OFFSET MATCH può essere di nuovo utile, ma questa volta è necessario migliorarla con la funzione COLONNE, in questo modo:
OFFSET( tabella_di_ricerca , offset_di_fila_di_ritorno , MATCH( valore_di_ricerca , OFFSET( tabella_di_ricerca , offset_di_fila , 0, 1, COLONNE( tabella_di_ricerca )), 0) -1, 1, 1)Dove:
- Offset_di_fila - il numero di righe da spostare dal punto di partenza alla riga di ricerca.
- Offset_fila_di_ritorno - il numero di righe da spostare dal punto di partenza alla riga di ritorno.
Supponendo che la tabella di ricerca sia B4:F5 e che il valore di ricerca sia nella cella B1, la formula è la seguente:
=OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1)
Nel nostro caso, l'offset della riga di ricerca è 1 perché il nostro intervallo di ricerca è di una riga inferiore rispetto al punto di partenza, mentre l'offset della riga di ritorno è 0 perché stiamo restituendo le corrispondenze dalla prima riga della tabella.
Esempio 3. Ricerca a due vie (per valori di colonna e di riga)
La ricerca bidirezionale restituisce un valore basato sulle corrispondenze in entrambe le righe e le colonne. È possibile utilizzare la seguente formula della matrice di ricerca doppia per trovare un valore all'intersezione di una determinata riga e colonna:
=OFFSET( tabella di ricerca , MATCH( valore di ricerca della riga , OFFSET( tabella di ricerca , 0, 0, ROWS( tabella di ricerca ), 1), 0) -1, MATCH( valore di ricerca della colonna , OFFSET( tabella di ricerca , 0, 0, 1, COLONNE( tabella di ricerca )), 0) -1)Dato che:
- La tabella di ricerca è A5:G9
- Il valore da abbinare alle righe si trova in B2
- Il valore da abbinare alle colonne è in B1
Si ottiene la seguente formula di ricerca bidimensionale:
=OFFSET(A5:G9, MATCH(B2, OFFSET(A5:G9, 0, 0, RIGHE(A5:G9), 1), 0)-1, MATCH(B1, OFFSET(A5:G9, 0, 0, 1, COLONNE(A5:G9)), 0) -1)
Inoltre, si tratta di una formula di matrice, quindi non dimenticate di premere Ctrl + Shift + Invio per inserirla correttamente.
Naturalmente, questa lunga formula OFFSET non è l'unico modo possibile per eseguire una doppia ricerca in Excel. È possibile ottenere lo stesso risultato utilizzando le funzioni VLOOKUP &; MATCH, SUMPRODUCT o INDEX &; MATCH. Esiste anche un modo privo di formule, che consiste nell'utilizzare intervalli denominati e l'operatore di intersezione (spazio). Il seguente tutorial illustra tutte le soluzioni alternative in modo dettagliato: Come eseguire ricerche bidirezionaliin Excel.
Funzione OFFSET - limiti e alternative
Si spera che gli esempi di formule riportati in questa pagina abbiano fatto luce sull'utilizzo di OFFSET in Excel. Tuttavia, per sfruttare in modo efficiente la funzione nelle proprie cartelle di lavoro, è necessario non solo conoscerne i punti di forza, ma anche diffidare dei suoi punti deboli.
I limiti più critici della funzione OFFSET di Excel sono i seguenti:
- Come altre funzioni volatili, OFFSET è una funzione di funzione affamata di risorse Ogni volta che i dati di origine vengono modificati, le formule OFFSET vengono ricalcolate, tenendo Excel occupato per un po' di tempo in più. Questo non è un problema per una singola formula in un foglio di lavoro di piccole dimensioni, ma se ci sono decine o centinaia di formule in una cartella di lavoro, Microsoft Excel potrebbe impiegare un bel po' di tempo per ricalcolare.
- Le formule OFFSET di Excel sono difficile da recensire Poiché i riferimenti restituiti dalla funzione OFFSET sono dinamici, le formule di grandi dimensioni (soprattutto quelle con OFFSET annidati) possono essere molto difficili da debuggare.
Alternative all'uso di OFFSET in Excel
Come spesso accade in Excel, lo stesso risultato può essere ottenuto in diversi modi. Ecco quindi tre eleganti alternative a OFFSET.
- Tabelle Excel
A partire da Excel 2002, abbiamo a disposizione una funzione davvero meravigliosa: le tabelle di Excel a tutti gli effetti, in contrapposizione ai soliti intervalli. Per creare una tabella a partire da dati strutturati, è sufficiente fare clic su Inserisci> Tabella sul Casa oppure premere Ctrl + T .
Inserendo una formula in una cella di una tabella di Excel, è possibile creare una cosiddetta "colonna calcolata" che copia automaticamente la formula in tutte le altre celle della colonna e regola la formula per ogni riga della tabella.
Inoltre, qualsiasi formula che faccia riferimento ai dati di una tabella si adatta automaticamente per includere le nuove righe aggiunte alla tabella o per escludere quelle eliminate. Tecnicamente, tali formule operano su colonne o righe della tabella, che sono gamme dinamiche Ogni tabella di una cartella di lavoro ha un nome univoco (quelli predefiniti sono Tabella1, Tabella2, ecc.) ed è possibile rinominare la tabella tramite il comando Design scheda> Proprietà gruppo> Nome della tabella casella di testo.
La schermata seguente mostra la formula SOMMA che fa riferimento alla tabella Bonus della tabella 3. Si prega di prestare attenzione al fatto che la formula include la colonna della tabella nome della colonna piuttosto che un intervallo di celle.
- Funzione INDICE di Excel
Sebbene non sia esattamente come OFFSET, anche INDEX di Excel può essere utilizzato per creare riferimenti dinamici all'intervallo. A differenza di OFFSET, la funzione INDEX non è volatile, quindi non rallenta Excel.
- Funzione INDIRETTO di Excel
Con la funzione INDIRETTO è possibile creare riferimenti dinamici all'intervallo da diverse fonti, come valori di celle, valori di celle e testo, intervalli denominati. È anche possibile fare riferimento in modo dinamico a un altro foglio di Excel o a un'altra cartella di lavoro. Potete trovare tutti gli esempi di formule nel nostro tutorial sulla funzione INDIRETTO di Excel.
Ricordate la domanda posta all'inizio di questo tutorial? Che cos'è l'OFFSET in Excel? Spero che ora sappiate la risposta : ) Se volete fare un'esperienza più pratica, scaricate pure il nostro quaderno di esercizi (vedi sotto) che contiene tutte le formule discusse in questa pagina e fate un reverse engineering per capirle meglio. Grazie per aver letto!
Eserciziario da scaricare
Esempi di formula OFFSET (file .xlsx)