Как найти правильные матрицы с помощью INDEX / MATCH - PullRequest
0 голосов
/ 17 мая 2018

У меня есть 10 разных матриц, каждая из которых представляет регион. Например: Канада, Юго-Запад, Флорида и т. Д. В каждой матрице есть список товаров в строках и список товаров в столбцах. Все матрицы были созданы в виде таблиц в Excel с именами, являющимися именами их регионов. Значения в матрице представляют скидку, предоставленную клиенту, если он покупает ОБА этих продуктов в этом регионе (матрицы находятся на другой вкладке из данных поиска). Например, в приведенной ниже матрице, если клиент в Канаде покупает Doll и Energy Drink, ему предоставляется скидка в размере 10 долларов США.

Как бы вы создали уравнение в столбце D приведенного ниже примера, которое возвращает значение в долларах на основе всех трех критериев: правильная матрица, правильный продукт (строка), правильный продукт (столбец). Я прошу прощения за публикацию уравнения INDEX / MATCH для работы, но я довольно плохо знаком с Excel и не уверен, с чего начать. Я отвечу быстро на любые ваши вопросы, спасибо!

Canada Matrix Example  (Table Name = Canada)

           Energy Drink    Phone    Bag    
Doll         $10           $20      $15
Hat          $5            $13      $17
Stapler      $8            $14      $23


Data Sheet

Column A     Column B     Column C      Column D (Output)
Canada       Doll         Energy Drink    Equation (=$10)
Florida      Hat          Phone           Equation
South West   Stapler      Phone           Equation
Canada       Hat          Notepad         Equation (=$14)

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Это сработало для меня:

enter image description here

Пока ваши таблицы имеют именованные диапазоны, не имеет значения, где они расположены.

Я разбил логику на несколько столбцов, но вы могли бы также легко объединить их в одну формулу.

Ключ в том, что:

INDEX(TableRangeHere, 1, 0)
INDEX(TableRangeHere, 0, 1)

возвращает всепервая строка и столбец соответственно именованного диапазона

0 голосов
/ 17 мая 2018

На случай, если кто-нибудь захочет увидеть ответ, который я придумал.Он включает в себя ряд функций INDEX / CHOOSE / VLOOKUP / MATCH.Регионы - это просто имена, которые я дал матрицам

=INDEX(CHOOSE(VLOOKUP(B:B,xref!L:M,2,0),Canada[#All],Central[#All],Florida[#All],GreatLakes[#All],MidAtlantic[#All],NorthEast[#All],NorthWest[#All],SouthCentral[#All],SouthEast[#All],SouthWest[#All]),MATCH(F2,CHOOSE(VLOOKUP(B:B,xref!L:M,2,0),Canada[[#All],[MODEL]],Central[[#All],[MODEL]],Florida[[#All],[MODEL]],GreatLakes[[#All],[MODEL]],MidAtlantic[[#All],[MODEL]],NorthEast[[#All],[MODEL]],NorthWest[[#All],[MODEL]],SouthCentral[[#All],[MODEL]],SouthEast[[#All],[MODEL]],SouthWest[[#All],[MODEL]]),0),MATCH(E2,CHOOSE(VLOOKUP(B:B,xref!L:M,2,0),Canada[#Headers],Central[#Headers],Florida[#Headers],GreatLakes[#Headers],MidAtlantic[#Headers],NorthEast[#Headers],NorthWest[#Headers],SouthCentral[#Headers],SouthEast[#Headers],SouthWest[#Headers]),0))
0 голосов
/ 17 мая 2018

Следующая формула INDEX / MATCH, которая будет работать в одном массиве Canada, представленном в примере.

=INDEX($B$2:$D$4,MATCH($B9,$A$2:$A$4,0),MATCH($C9,$B$1:$D$1,0))

Затем вы можете скопировать это в несколько слоев операторов IF, которые указывают каждую копию формулы INDEX / MATCH на соответствующий массив Region на рабочем листе.

Пока столбец B всегда является строкой, а столбец C всегда столбцом, это должно работать нормально. В случае предоставленного образца последняя транзакция (Canada, Hat, Stapler, return 14) не работает, поскольку ссылочный массив не имеет столбца Stapler. Я предполагаю, что рабочий файл имеет более широкий массив.

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