Fare riferimento in modo dinamico a una colonna di tabella denominata (tramite il contenuto della cella) in Excel


12

Come faccio a fare riferimento in modo dinamico a una colonna di tabella Excel in Excel 2007? Voglio fare riferimento a una colonna denominata di una tabella denominata e la colonna referenziata varierà con il valore di una cella.

Ho una tabella in Excel (chiamiamola Tabella1 ). Voglio fare riferimento a una delle sue colonne e COUNTai numeri in quella colonna. Voglio identificare dinamicamente la colonna referenziata da un valore in un'altra cella ( A1) in modo da poter ottenere il seguente risultato: Quando cambio A1, la formula che conta Table1 [ DynamicallyReferencedColumnName ] viene aggiornata al nuovo riferimento.

Esempio:

  • Se A1= names    allora la formula sarebbe uguale COUNT(Table1[names]).
  • Se A1= lastnameallora la formula sarebbe uguale COUNT(Table1[lastname]).

Ho provato a utilizzare =COUNT(Table1[INDIRECT("$A$1")]), ma Excel dice che la formula contiene un errore.

Come posso fare questo?


PS Ho trovato questo documento MSDN che potrebbe essere pertinente: ricalcolo di Excel .


Quale versione di Excel stai usando?
CharlieRB,

Attualmente in uso Excel 2007
rcphq

Penso che questa domanda possa anche essere riformulata come: "riferimento a un componente dinamico di un riferimento strutturato in Excel".
jiggunjer,

Risposte:


13

Ce l'hai quasi fatta INDIRECT(), ma la tua logica era un po 'fuori. Prova questo invece:

=COUNT(INDIRECT("Table1["&A1&"]"))

La chiave da ricordare è che INDIRECT()richiede solo testo (cioè una stringa) per il primo argomento. Pertanto, è necessario passare tutte le parti del riferimento della tabella alla funzione come testo.


in effetti ha funzionato, dovevo fare riferimento all'intero tavolo. questo ha funzionato! Grazie!
rcphq,

15

L'uso del metodo INDIRETTO funziona, ma è meglio evitarlo quando possibile poiché è una funzione volatile e può avere un impatto computazionale massiccio sul foglio di calcolo.

Un'alternativa non volatile che realizza ciò che vuoi è usare INDEX / MATCH

COUNT(INDEX(Table1, 0, MATCH($A$1, Table1[#Headers], 0)))

-Tim


Eccellente, in realtà mi sono imbattuto in questo metodo più tardi e lo uso da allora. Per coincidenza, ho iniziato a notare un enorme rallentamento sui fogli di calcolo più vecchi in cui stavo usando indirettamente su una dozzina di fogli. Grazie!
rcphq

2

il primo passo imposta una cella di testo che contiene il nome della colonna a cui fare riferimento (ad esempio $ A $ 1) $ A $ 1 contiene, ad esempio, "Colonna2".

quindi per trovare il conteggio della colonna a cui fa riferimento $ A $ 1 sarebbe = Count (indiretto ("Table1 [" & $ a $ 1 & "]"))

questo metodo indiretto può essere utilizzato per costruire tutte le parti del riferimento della tabella e può ad esempio essere organizzato anche per la ricerca da diverse tabelle

mancia. se la cella $ a $ 1 viene convalidata come elenco a discesa che punta alle intestazioni della singola tabella, verranno prese tutte le modifiche al numero di colonne nella tabella di eventuali modifiche ai titoli delle intestazioni.


1
(1) Primo passo: inserisci il nome della colonna desiderata in una cella come A1.  L'OP ha già fatto questo e lo afferma nella domanda.   (2) Il secondo passo è una copia esatta della risposta di Excellll . (4) Configurare A1come un elenco a discesa dei nomi di colonne validi sembra una buona idea, ma non capisco il resto dell'ultimo paragrafo della risposta.
Scott,

1

Ecco un ottimo articolo sui riferimenti strutturati in Excel. Sembrerebbe che funzioni in modo leggermente diverso in Excel 2010 rispetto a Excel 2007.

Utilizzo di riferimenti strutturati con tabelle Excel

Fondamentalmente farai riferimento alla tabella e quindi alla colonna all'interno della tabella.

Tabella Excel generica

In questo esempio puoi fare riferimento alla Tabella 1 Colonna 1 in questo modo:

=COUNT(Table1[Column1])

Puoi nominare le colonne di intestazione nella tua tabella. Se rinominassi Column1 in Sales la formula diventerebbe:

=COUNT(Table1[Sales])

Sì, la mia tabella è correttamente denominata con le diverse colonne, quello che voglio è un metodo per RACCOGLIERE quale colonna voglio a seconda del valore di una cella, qualcosa del genere =COUNT(Table1[A1])Dove A1 è la cella che voglio contenere il nome della
colonna
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.