Excel - индекс совпадения для массива не возвращает правильный ответ - PullRequest
0 голосов
/ 15 октября 2018

У меня есть таблица статистики рабочей силы («Штатная рабочая сила») с разбивкой по штату, году и типу статистики (есть 4 типа статистики).См. Снимок экрана ниже:

Lookup table

Затем у меня есть вторая таблица, в которой я позволяю пользователю ввести каждый из этих 3 параметров поиска и вернуть егозначение (например, из скриншота выше, Алабама 2000 силы будет равна 2133233).Однако по какой-то причине совпадение индекса продолжает возвращаться 0.

=INDEX('State Labor Force'!$D:$D,
MATCH($H$79&$G80&$B$78,
'State Labor Force'!$A:$A&'State Labor Force'!$B:$B&'State Labor Force'!$C:$C,0))

(где H79 = ввод состояния, G80 = ввод года и B78 = ввод статистики; все 3 связаны ссписок проверок и нет орфографических ошибок).

У кого-нибудь есть идеи, почему эта формула не будет работать?

Ответы [ 2 ]

0 голосов
/ 15 октября 2018
  1. Эта конструкция должна быть зафиксирована как формула массива **
  2. Вам не хватает FALSE (или, что эквивалентно, 0) для MATCH match_type параметр

Таким образом:

=INDEX('State Labor Force'!$D:$D,MATCH($H$79&$G80&$B$78,'State Labor Force'!$A:$A&'State Labor Force'!$B:$B&'State Labor Force'!$C:$C,0))

Однако, ссылаясь на целые столбцы в такой конструкции, вы вынужденыExcel для расчета удивительного количества ячеек (более 3 миллионов) для одной формулы.

Гораздо лучше было бы выполнить конкатенации в дополнительном столбце на рабочем листе, после чего вы можете использовать конструкцию не-массива INDEX / MATCH, которая будет вычисляться намного быстрее.Например, используя для этой цели столбец E вкладки Штатская рабочая сила , мы введем в E2:

=A2&B2&C2

, после чего вы можетеиспользуйте просто:

=INDEX('State Labor Force'!$D:$D,MATCH($H$79&$G80&$B$78,'State Labor Force'!$E:$E,0))

С уважением

** Формулы массива вводятся не так, как «стандартные» формулы.Вместо того, чтобы просто нажимать ENTER, вы сначала удерживаете клавиши CTRL и SHIFT, и только затем нажимаете ENTER.Если вы сделали это правильно, вы заметите, что Excel заключает в формулу фигурные скобки {} (хотя не пытайтесь вставить их вручную).

0 голосов
/ 15 октября 2018

Ваша формула должна выглядеть следующим образом (Ctrl + Shift + Enter, чтобы перейти к формуле массива):

{=INDEX('State Labor Force'!$D:$D,
MATCH(1,($H$79='State Labor Force'!$A:$A)*($G80='State Labor Force'!$B:$B)*($B$78='State Labor Force'!$C:$C),0))}

Идея формулы индекс + совпадение с несколькими критериями заключается в следующем:

{=INDEX(Result Range,MATCH(1,(A1=range1)*(B2=range2)*(C3=range3),0))}

Где:

Result Range = диапазон, в котором вы хотите получить окончательный результат

Range1 = диапазон критериев 1, где вы определяете критерии 1 вA1

Range2 = диапазон критериев 2, где вы определяете критерии 2 в B2

Range3 = диапазон критериев 3, где вы определяете критерии 3 в C3

0 = точное совпадение для возврата

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