Excel 2010: crea un intervallo denominato senza un riferimento al foglio nella formula


3

In Name Manager ho creato un intervallo denominato con questo riferimento:

=COUNTIF($A$4:A4, Tbl_InventoryMain[Barcode])

Excel inserisce automaticamente il nome del foglio corrente prima di $A$4:A4. Ho bisogno che rimanga solo $A$4:A4per usare lo stesso riferimento su altri fogli. Non voglio creare un intervallo denominato per ciascun foglio.

Come posso ottenere questo riferimento denominato per funzionare su qualsiasi foglio?

Questo è solo un pezzo di una formula lunga. Questa particolare equazione viene ripetuta in un array. Sto cercando di ridurre le dimensioni della formula e accelerare i calcoli posizionando le parti della formula generale nel gestore dei nomi.

Risposte:


1

La mia risposta si concentra sulla creazione di un riferimento $A$4:A4che funzioni su tutti i fogli di lavoro poiché questa è la parte del riferimento a cui Excel sta anteponendo il nome del foglio indesiderato. (Presumo che tu non abbia problemi a fare riferimento alla tabella.)

È possibile risolvere questo problema utilizzando la funzione INDIRETTA come segue:

  1. Su qualsiasi foglio di lavoro, seleziona cella A1
  2. Crea un intervallo denominato con un riferimento di:

    =INDIRECT("$A$4"):INDIRECT("R[3]C[0]",FALSE)
    

Per la tua domanda, la seconda cella nel tuo riferimento di $A$4:A4è relativa e il riferimento di questo nome è costruito di conseguenza. Quindi, se si utilizza questo nome nella cella A1, verrà restituito l'intervallo $A$4:A4. Se si fa riferimento al nome dal B1nome, verrà restituito correttamente un intervallo di $A$4:B4.

Come funziona

La prima metà della formula è semplice. INDIRECT("$A$4")farà sempre riferimento alla cella A4sul foglio di lavoro corrente.

La seconda metà è un po 'più complicata. INDIRECT("R[3]C[0]",FALSE)fa riferimento a "3 righe verso il basso nella stessa colonna, rispetto alla cella corrente". Se sei in cella A1questo è cellulare A4. L' argomento FALSO indica alla funzione INDIRETTA di interpretare il testo come riferimento in stile R1C1 anziché come riferimento in stile A1 predefinito.

La formula completata

Il riferimento al tuo nome finale sarà simile al seguente:

=COUNTIF(INDIRECT("$A$4"):INDIRECT("R[3]C[0]",FALSE), Tbl_InventoryMain[Barcode])

Gli "indiretti" non rallenteranno la cartella di lavoro come funzione volatile?
mechengr02,

Dipende da una serie di cose, ad esempio quanto è grande / complessa la cartella di lavoro di Excel, quanto è veloce la tua CPU, ecc. Poiché non esiste una risposta unica per tutte le domande, è meglio provare questa soluzione e vedere se funziona nel tuo ambiente. In caso contrario, potrebbe essere necessario rinunciare a utilizzare Named Ranges per questa particolare applicazione.
Twisty Impersonator,

È possibile utilizzare questa sintassi dinamica in un grafico? Posso far funzionare correttamente la formula, ma non appena provo a inserirla in un grafico, si rompe. es = test.xlsm! C_Visits
Chris

Questa è un'ottima domanda! Dovresti pubblicarlo come una nuova domanda, facendo riferimento a questo post per contesto, se necessario.
Twisty Impersonator
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.