Verweisen Sie dynamisch auf eine benannte Tabellenspalte (über den Zelleninhalt) in Excel

12

Wie verweise ich in Excel 2007 dynamisch auf eine Excel-Tabellenspalte? Ich möchte auf eine benannte Spalte einer benannten Tabelle verweisen, und die referenzierte Spalte variiert mit dem Wert einer Zelle.

Ich habe eine Tabelle in Excel (nennen wir sie Tabelle1 ). Ich möchte auf eine seiner Spalten und COUNTdie Zahlen in dieser Spalte verweisen . Ich möchte die referenzierte Spalte dynamisch anhand eines Werts in einer anderen Zelle ( A1) identifizieren , damit ich das folgende Ergebnis erzielen kann: Wenn ich mich ändere A1, wird die Formel, die Tabelle 1 [ DynamicallyReferencedColumnName ] zählt, auf die neue Referenz aktualisiert.

Beispiel:

  • Wenn A1= names    dann wäre die Formel gleich COUNT(Table1[names]).
  • Wenn A1= lastnamedann wäre die Formel gleich COUNT(Table1[lastname]).

Ich habe es versucht =COUNT(Table1[INDIRECT("$A$1")]), aber Excel sagt, dass die Formel einen Fehler enthält.

Wie kann ich das machen?


PS Ich habe dieses MSDN-Dokument gefunden, das möglicherweise relevant ist: Excel-Neuberechnung .

rcphq
quelle
Welche Excel-Version verwenden Sie?
CharlieRB
Derzeit mit Excel 2007
rcphq
Ich denke, diese Frage kann auch wie folgt umformuliert werden: "Referenzieren einer dynamischen Komponente einer strukturierten Referenz in Excel".
Jiggunjer

Antworten:

13

Sie hatten es fast geschafft INDIRECT(), aber Ihre Logik war ein wenig falsch. Versuchen Sie stattdessen Folgendes:

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

Der Schlüssel zum Erinnern ist, dass INDIRECT()nur Text (dh eine Zeichenfolge) für das erste Argument verwendet wird. Daher müssen Sie alle Teile der Tabellenreferenz als Text an die Funktion übergeben.

Excellll
quelle
in der Tat funktionierte das, ich musste die gesamte Tabelle referenzieren. das hat funktioniert! Vielen Dank!
rcphq
15

Die Verwendung der INDIRECT-Methode funktioniert, wird jedoch nach Möglichkeit vermieden, da es sich um eine flüchtige Funktion handelt, die massive Auswirkungen auf die Berechnung Ihrer Tabelle haben kann.

Eine nichtflüchtige Alternative, die das erreicht, was Sie wollen, ist die Verwendung von INDEX / MATCH

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

-Tim

Tim Reczek
quelle
Excelent, ich bin später tatsächlich auf diese Methode gestoßen und benutze sie seitdem. Zufälligerweise bemerkte ich eine enorme Verlangsamung der älteren Tabellen, in denen ich indirekt auf über einem Dutzend Blättern verwendete. Vielen Dank!
rcphq
2

Im ersten Schritt richten Sie eine Textzelle ein, die den Namen der Spalte enthält, auf die Sie verweisen möchten (z. B. $ A $ 1). $ A $ 1 enthält beispielsweise "Spalte 2".

dann wäre die Anzahl der Spalten, auf die sich $ A $ 1 bezieht, = Anzahl (indirekt ("Tabelle 1 [" & $ a $ 1 & "]")).

Diese indirekte Methode kann verwendet werden, um alle Teile der Tabellenreferenz zu erstellen, und kann beispielsweise auch so angeordnet werden, dass sie aus verschiedenen Tabellen nachschlägt

Trinkgeld. Wenn die $ a $ 1-Zelle als Dropdown-Liste validiert wird, die auf die Überschriften der einzelnen Tabelle verweist, werden alle Änderungen an der Anzahl der Spalten in der Tabelle sowie alle Änderungen an den Überschriften-Titeln übernommen.

Thompson.Steve.J
quelle
1
(1) Erster Schritt: Geben Sie den Namen der gewünschten Spalte in eine Zelle wie z A1.  Das OP hat dies bereits getan und sagt dies in der Frage.   (2) Der zweite Schritt ist eine genaue Kopie der Antwort von Excellll . (4) Das Konfigurieren A1als Dropdown-Liste der gültigen Spaltennamen scheint eine gute Idee zu sein, aber ich verstehe den Rest des letzten Absatzes der Antwort nicht.
Scott
1

Hier ist ein sehr guter Artikel zu strukturierten Referenzen in Excel. Es scheint, dass dies in Excel 2010 etwas anders funktioniert als in Excel 2007.

Verwenden strukturierter Referenzen mit Excel-Tabellen

Grundsätzlich verweisen Sie auf die Tabelle und dann auf die Spalte in der Tabelle.

Generische Excel-Tabelle

In diesem Beispiel können Sie wie folgt auf Tabelle 1, Spalte 1 verweisen:

=COUNT(Table1[Column1])

Sie können die Kopfspalten in Ihrer Tabelle benennen. Wenn ich Column1 in Sales umbenennen würde, würde die Formel lauten:

=COUNT(Table1[Sales])
wbeard52
quelle
Ja, meine Tabelle ist richtig mit den verschiedenen Spalten benannt. Was ich will, ist eine Methode, um zu sagen, welche Spalte ich will, abhängig von einem =COUNT(Table1[A1])Zellenwert , so etwas. Dabei ist A1 die Zelle, die ich den Spaltennamen enthalten möchte
rcphq