Динамическая ссылка на столбец именованной таблицы (через содержимое ячейки) в Excel

12

Как динамически ссылаться на столбец таблицы Excel в Excel 2007? Я хочу сослаться на именованный столбец именованной таблицы, и указанный столбец будет меняться в зависимости от значения ячейки.

У меня есть таблица в Excel (назовем ее Table1 ). Я хочу сослаться на один из его столбцов и COUNTномера в этом столбце. Я хочу динамически идентифицировать столбец, на который ссылаются, по значению в другой ячейке ( A1), чтобы я мог достичь следующего результата: Когда я изменяю A1, формула, которая считает Table1 [ DynamicallyReferencedColumnName ], обновляется до новой ссылки.

Пример:

  • Если A1=, names    то формула будет равна COUNT(Table1[names]).
  • Если A1=, lastnameто формула будет равна COUNT(Table1[lastname]).

Я пытался использовать =COUNT(Table1[INDIRECT("$A$1")]), но Excel говорит, что формула содержит ошибку.

Как я могу это сделать?


PS Я нашел этот документ MSDN, который может иметь отношение: пересчет Excel .

rcphq
источник
Какую версию Excel вы используете?
CharlieRB
В настоящее время используется Excel 2007
rcphq
Я думаю, что этот вопрос также можно перефразировать следующим образом: «ссылаться на динамический компонент структурированной ссылки в Excel».
jiggunjer

Ответы:

13

Вы почти с этим справились INDIRECT(), но ваша логика была немного не в порядке. Попробуйте это вместо этого:

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

Необходимо помнить, что INDIRECT()для первого аргумента принимается только текст (то есть строка). Таким образом, вы должны передать все части таблицы в функцию как текст.

Excellll
источник
действительно, это сработало, мне нужно было ссылаться на всю таблицу. это сработало! Спасибо!
rcphq
15

Использование метода INDIRECT работает, но его лучше избегать всякий раз, когда это возможно, так как это изменчивая функция, которая может оказать огромное влияние на вычислительные возможности вашей электронной таблицы.

Энергонезависимая альтернатива, которая выполняет то, что вы хотите, это использовать INDEX / MATCH

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

-Тим

Тим Речек
источник
Отлично, я на самом деле столкнулся с этим методом позже и использую его с тех пор. По совпадению я начал замечать огромное замедление на более старых электронных таблицах, где я использовал косвенный на более чем дюжине листов. Спасибо!
rcphq
2

На первом этапе настройте текстовую ячейку, которая содержит имя столбца, на который вы ссылаетесь (скажем, $ A $ 1). $ A $ 1 содержит, например, «Столбец2».

затем, чтобы найти счетчик столбца, на который ссылается $ A $ 1, будет = Count (косвенный ("Table1 [" & $ a $ 1 & "]"))

этот косвенный метод может использоваться для построения всех частей ссылки на таблицу и может, например, также быть организован для поиска из разных таблиц

совет. если ячейка $ a $ 1 проверена как раскрывающийся список, который указывает на заголовки отдельной таблицы, то будут учитываться любые изменения количества столбцов в таблице и любые изменения заголовков заголовков.

Thompson.Steve.J
источник
1
(1) Первый шаг: поместите имя нужного столбца в ячейку, например A1.  ОП уже сделал это и говорит об этом в вопросе.   (2) Второй шаг - точная копия ответа Excellll . (4) Настройка A1в качестве выпадающего списка допустимых имен столбцов выглядит хорошей идеей, но я не понимаю остальную часть последнего абзаца ответа.
Скотт
1

Вот очень хорошая статья о структурированных ссылках в Excel. Казалось бы, это работает немного иначе в Excel 2010, чем в Excel 2007.

Использование структурированных ссылок с таблицами Excel

В основном вы будете ссылаться на таблицу, а затем на столбец в таблице.

Универсальная таблица Excel

В этом примере вы можете сослаться на Столбец 1 столбца 1 следующим образом:

=COUNT(Table1[Column1])

Вы можете назвать столбцы заголовка в вашей таблице. Если бы я переименовал Column1 в Sales, формула стала бы такой:

=COUNT(Table1[Sales])
wbeard52
источник
Да, моя таблица правильно названа с различными столбцами, я хочу, чтобы метод, чтобы Сказать, какой столбец я хочу, в зависимости от значения ячейки, что-то вроде этого, =COUNT(Table1[A1])где A1 - это ячейка, я хочу содержать имя столбца
rcphq