Référence dynamique à une colonne de tableau nommé (via le contenu des cellules) dans Excel


12

Comment référencer dynamiquement une colonne de tableau Excel dans Excel 2007? Je veux référencer une colonne nommée d'une table nommée et la colonne référencée variera avec la valeur d'une cellule.

J'ai un tableau dans Excel (appelons-le Tableau1 ). Je veux faire référence à l'une de ses colonnes et COUNTaux chiffres de cette colonne. Je veux identifier la colonne référencée dynamiquement à partir d'une valeur dans une autre cellule ( A1) afin que je puisse obtenir le résultat suivant: Lorsque je change A1, la formule qui compte Table1 [ DynamicallyReferencedColumnName ] est mise à jour vers la nouvelle référence.

Exemple:

  • Si A1= names    alors la formule serait égale COUNT(Table1[names]).
  • Si A1= lastnamealors la formule serait égale COUNT(Table1[lastname]).

J'ai essayé d'utiliser =COUNT(Table1[INDIRECT("$A$1")]), mais Excel dit que la formule contient une erreur.

Comment puis-je faire ceci?


PS J'ai trouvé ce document MSDN qui peut être pertinent: recalcul Excel .


Quelle version d'Excel utilisez-vous?
CharlieRB


Je pense que cette question peut également être reformulée comme suit: "référencer un composant dynamique d'une référence structurée dans Excel".
jiggunjer

Réponses:


13

Vous l'aviez presque avec INDIRECT(), mais votre logique était un peu décalée. Essayez plutôt ceci:

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

La clé à retenir est que INDIRECT()ne prend que du texte (c'est-à-dire une chaîne) pour le premier argument. Ainsi, vous devez passer toutes les parties de la référence de table à la fonction sous forme de texte.


en effet cela a fonctionné, j'avais besoin de référencer la table entière. cela a fonctionné! Merci!
rcphq

15

L'utilisation de la méthode INDIRECT fonctionne, mais il est préférable de l'éviter autant que possible car il s'agit d'une fonction volatile et peut avoir un impact de calcul massif sur votre feuille de calcul.

Une alternative non volatile qui accomplit ce que vous voulez est d'utiliser INDEX / MATCH

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

-Tim


Excelent, j'ai découvert cette méthode plus tard et je l'utilise depuis. Par coïncidence, j'ai commencé à remarquer un énorme ralentissement sur les anciennes feuilles de calcul où j'utilisais indirect sur plus d'une douzaine de feuilles. Merci!
rcphq

2

première étape, configurez une cellule de texte qui contient le nom de la colonne à laquelle vous voulez faire référence (disons $ A $ 1) $ A $ 1 contient "Colonne2" par exemple.

puis pour trouver le compte de la colonne à laquelle $ A $ 1 fait référence serait = Count (indirect ("Table1 [" & $ a $ 1 & "]"))

cette méthode indirecte peut être utilisée pour construire toutes les parties de la référence de table et peut par exemple également être arrangée pour rechercher à partir de différentes tables

pointe. si la cellule $ a $ 1 est validée en tant que liste déroulante qui pointe vers les en-têtes du tableau unique, alors toute modification du nombre de colonnes dans le tableau de toute modification des titres d'en-tête sera récupérée.


1
(1) Première étape: mettez le nom de la colonne souhaitée dans une cellule telle que A1.  Le PO l'a déjà fait et le dit dans la question.   (2) La deuxième étape est une copie exacte de la réponse d' Excellll . (4) La configuration en A1tant que liste déroulante des noms de colonnes valides semble être une bonne idée, mais je ne comprends pas le reste du dernier paragraphe de la réponse.
Scott

1

Voici un très bon article concernant les références structurées dans Excel. Il semblerait que cela fonctionne un peu différemment dans Excel 2010 que dans Excel 2007.

Utilisation de références structurées avec des tableaux Excel

Fondamentalement, vous référencerez la table, puis la colonne dans la table.

Tableau Excel générique

Dans cet exemple, vous pouvez référencer la colonne 1 du tableau 1 comme ceci:

=COUNT(Table1[Column1])

Vous pouvez nommer les colonnes d'en-tête de votre table. Si j'ai renommé Colonne1 en Ventes, la formule deviendrait:

=COUNT(Table1[Sales])

Ouais, ma table est correctement nommée avec les différentes colonnes, ce que je veux, c'est une méthode pour EXCELLER quelle colonne je veux en fonction de la valeur de la cellule, quelque chose comme ça =COUNT(Table1[A1])Où A1 est la cellule que je veux contenir le nom de la
colonne
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.