Dynamicznie odwołuj się do nazwanej kolumny tabeli (za pośrednictwem zawartości komórki) w programie Excel

12

Jak dynamicznie odwoływać się do kolumny tabeli programu Excel w programie Excel 2007? Chcę odwoływać się do nazwanej kolumny nazwanej tabeli, a wskazana kolumna będzie się różnić w zależności od wartości komórki.

Mam tabelę w programie Excel (nazwijmy ją Tabela1 ). Chcę odwołać się do jednej z jej kolumn i COUNTliczb w tej kolumnie. Chcę zidentyfikować kolumnę, do której istnieje odwołanie, dynamicznie na podstawie wartości w innej komórce ( A1), aby móc osiągnąć następujący wynik: Po zmianie A1formuła zliczająca wartość Table1 [ DynamicallyReferencedColumnName ] zostaje zaktualizowana do nowego odwołania.

Przykład:

  • Jeśli A1=, names    wówczas wzór byłby równy COUNT(Table1[names]).
  • Jeśli A1=, lastnamewówczas wzór byłby równy COUNT(Table1[lastname]).

Próbowałem użyć =COUNT(Table1[INDIRECT("$A$1")]), ale program Excel mówi, że formuła zawiera błąd.

W jaki sposób mogę to zrobić?


PS Znalazłem ten dokument MSDN, który może być odpowiedni: Przeliczenie programu Excel .

rcphq
źródło
Jakiej wersji programu Excel używasz?
CharlieRB,
Obecnie korzystam z programu Excel 2007
rcphq,
Myślę, że to pytanie można również sformułować następująco: „odwołaj się do dynamicznego komponentu odniesienia strukturalnego w programie Excel”.
jiggunjer

Odpowiedzi:

13

Prawie to miałeś INDIRECT(), ale twoja logika była trochę zła. Spróbuj zamiast tego:

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

Kluczem do zapamiętania jest to, że INDIRECT()pobiera tylko tekst (tzn. Ciąg znaków) dla pierwszego argumentu. Zatem musisz przekazać wszystkie części odwołania do tabeli do funkcji jako tekst.

Excellll
źródło
rzeczywiście działało, musiałem odwołać się do całego stołu. to zadziałało! dzięki!
rcphq,
16

Metoda INDIRECT działa, ale najlepiej jej unikać, gdy tylko jest to możliwe, ponieważ jest to zmienna funkcja i może mieć ogromny wpływ obliczeniowy na arkusz kalkulacyjny.

Nieulotną alternatywą, która pozwala osiągnąć zamierzony cel, jest użycie INDEX / MATCH

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

-Tim

Tim Reczek
źródło
Doskonały, rzeczywiście natknąłem się na tę metodę później i używam jej odtąd. Przypadkowo zacząłem zauważać ogromne spowolnienie w starszych arkuszach kalkulacyjnych, w których korzystałem pośrednio z kilkunastu arkuszy. Dzięki!
rcphq,
2

w pierwszym kroku ustaw komórkę tekstową, która zawiera nazwę kolumny, do której chcesz się odwoływać (np. $ A $ 1) $ A $ 1 zawiera na przykład „Kolumnę2”.

to aby znaleźć liczbę kolumn, do której odnosi się $ A $ 1, byłoby = Count (pośrednie („Tabela 1 [” i $ 1 $ i „]”))

ta pośrednia metoda może być użyta do skonstruowania wszystkich części odwołania do tabeli i może na przykład być również przystosowana do wyszukiwania z różnych tabel

Wskazówka. jeśli komórka $ a $ 1 zostanie zweryfikowana jako rozwijana lista, która wskazuje na nagłówki pojedynczej tabeli, wówczas wszelkie zmiany liczby kolumn w tabeli oraz wszelkie zmiany tytułów nagłówka zostaną pobrane.

Thompson.Steve.J
źródło
1
(1) Pierwszy krok: umieść nazwę żądanej kolumny w komórce, takiej jak A1.  PO już to zrobił i tak mówi w pytaniu.   (2) Drugim krokiem jest dokładna kopia odpowiedzi Excelllla . (4) Konfigurowanie A1jako listy rozwijanej prawidłowych nazw kolumn wygląda na dobry pomysł, ale nie rozumiem reszty ostatniego akapitu odpowiedzi.
Scott
1

Oto bardzo dobry artykuł na temat strukturalnych odniesień w programie Excel. Wygląda na to, że działa to nieco inaczej w programie Excel 2010 niż w programie Excel 2007.

Używanie odniesień strukturalnych z tabelami Excela

Zasadniczo odniesiesz się do tabeli, a następnie do kolumny w tabeli.

Ogólna tabela programu Excel

W tym przykładzie możesz odwołać się do tabeli 1 w kolumnie 1 w następujący sposób:

=COUNT(Table1[Column1])

Możesz nazwać kolumny nagłówków w swojej tabeli. Gdybym zmienił nazwę kolumny 1 na Sprzedaż, formuła wyglądałaby następująco:

=COUNT(Table1[Sales])
wbeard52
źródło
Tak, moja tabela jest poprawnie nazwana z różnymi kolumnami, chcę, aby metoda TELL wyróżniała żądaną kolumnę w zależności od wartości komórki, coś takiego: =COUNT(Table1[A1])gdzie A1 to komórka, którą chcę zawierać nazwę kolumny
rcphq