Использование Index & Match в Excel; почему не работают именованные диапазоны? - PullRequest
0 голосов
/ 14 января 2019

У меня есть таблица, которую я использую для суммирования некоторых данных из других таблиц; данные почти полностью текстовые, поэтому сводная таблица не является ответом. У меня есть таблица на листе следующим образом ... [Screenshot]

Вот типичная формула для столбцов D: L ...
ФОРМУЛА: =INDEX(tblITPM,MATCH(tblHCSmry[[#Headers],[Data Source]],tblITPM[[#All],[Column1]],0),MATCH([@MetricName],'SheetA'!$A$2:$D$2,0))

По отдельности формулы работают нормально, но сумма вычислений работает только в первых 3 строках моей сводной таблицы (tblHCSmry). Есть две проблемы, которые я не знаю, как решить:

  1. В разделе «массив» INDEX Я ссылаюсь на таблицу имена, которые перечислены в столбце B (TableName); жестко, как я выше (tblTableA) делает все элементы, на которые нужно ссылаться отдельная таблица на отдельном листе для сбоя.
  2. Формула MATCH (MATCH([@MetricName],'1_ITPM_Summary'!$A2:$D2,0)) имеет аналогичную проблему; Я получаю правильный ответ для первых 3 таблиц (2, 3 или 4), которые ожидаю, так как «lookup_array» жестко запрограммирован. Таким образом, проблема снова возникает, хотя, когда я хочу сослаться на другую таблицу, такую ​​как tblTableB, указывая на столбец B в tblHCSmry.

Полагаю, основной вопрос: могу ли я использовать именованный диапазон таблицы или мне нужно использовать формат "SheetA"! A3: D3 "? Если так, есть ли способ динамически изменить «SheetA»! на "SheetB"! " ссылаясь на столбец B таблицы tblHCSmry? FWIW: Я пытался связать имя листа со ссылкой, и это не сработало.

1 Ответ

0 голосов
/ 14 января 2019

Вы можете использовать именованные диапазоны, но вам нужно иметь указатели на расположение данных в ячейках, которое, по-видимому, совпадает с тем, что у вас уже есть в столбцах A и B. Затем вы можете ссылаться на них динамически, используя * 1001. *. =INDIRECT() позволяет вам взять значение ячейки и использовать его как ссылку, а не ссылку на саму ячейку.

Например

=INDEX(INDIRECT([@TableName]),MATCH(tblHCSmry[[#Headers],[Data Source]],tblITPM[[#All],[Column1]],0),MATCH([@MetricName],INDIRECT("'" & [@TabName] & "'!$A$2:$D$2"),0))

сделает ваш возвращаемый массив тем, на что есть ссылка в [@TableName], а ваш параметр массива во второй MATCH функции будет тем, на что есть ссылка в [@TabName]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...