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.