Excel Match, Offset, Index для нескольких столбцов - PullRequest
0 голосов
/ 15 сентября 2018

Я хочу найти значение соответствующих клиентов. PO # Счет-фактура # Цитата # и т. Д., А список клиентов указан в нескольких столбцах.

Используемая формула: = INDEX (D16, D17,2, MATCH(«Детали клиента и счета-фактуры»! A1: ACZ25, «Детали клиента и счета-фактуры»! A1: ACZ1,0))

ИЩУ ТРЕБУЕМЫХ ФУНКЦИЙ LOOKUP С ИНДЕКСОМ СМЕЩЕНИЯ СМЕЩЕНИЯ Pic

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018
INDEX(range you want to look in,  how many rows down from the top of your range, how many columns to the right)

Это основное использование индекса. Если диапазон представляет собой одну строку или один столбец, то требуется только вторая запись и то, как далеко вниз от диапазона вы хотите перейти. Еще одно маленькое предостережение: если 0 для количества строк или столбцов. 0 заставит index возвращать всю соответствующую строку или столбец.

Давайте начнем с того, на какой набор столбцов вы хотите посмотреть. вам нужно сопоставить D16 (client #) с соответствующей записью в строке заголовка. Для этого MATCH - отличный выбор.

=MATCH(value you are looking for,  range you want to look in, and what type of match)

В вашем случае

=MATCH($D$16,'Client PO & Invoice Details'!$1:$1,0)

$ 1: $ 1 - это весь 1-й ряд таблицы. $ Не позволит изменить номер строки, если формула была скопирована вверх / вниз в другую ячейку. 0 в конце говорит функции, что вы хотите точное совпадение, а не приблизительное совпадение типов. После выполнения этой функции вы будете знать, в какую колонку начать поиск.

Итак, теперь вам нужно выяснить, с какой строкой вы хотите работать, а затем начать извлекать данные. Это может быть с VLOOKUP. Вы можете определить свой диапазон, используя функцию OFFSET. Однако я собираюсь пойти другим путем. Я собираюсь снова использовать MATCH, чтобы определить строку, на которую мы хотим посмотреть, основываясь на столбце, который мы определили

=INDEX('Client PO & Invoice Details'$A:$ACZ,0,MATCH($D$16,'Client PO & Invoice Details'!$1:$1,0))

Этот индекс собирается для всех строк в столбце, найденном при совпадении. Итак, теперь нам нужно сопоставить эти результаты, чтобы выяснить, с какой строкой вы работаете. При этом мы получаем формулу, которая выглядит следующим образом:

=MATCH($D$17,INDEX('Client PO & Invoice Details'$A:$ACZ,0,MATCH($D$16,'Client PO & Invoice Details'!$1:$1,0)),0)

Теперь, когда вы знаете строку, с которой вы работаете, и столбец (S), с которым вы работаете, вы можете извлечь необходимые данные с помощью INDEX.

В D18 поместить следующую формулу

=INDEX('Client PO & Invoice Details'$A:$ACZ,MATCH($D$17,INDEX('Client PO & Invoice Details'$A:$ACZ,0,MATCH($D$16,'Clent PO & Invoice Details'!$1:$1,0)),0),MATCH($D$16,'Client PO & Invoice Details'!$1:$1,0)+1)

В D19 используйте ту же формулу, но измените +1 на +2. продолжайте делать это, уменьшая + # каждый раз по одному.

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

Имейте в виду, что у вас есть ограниченное количество столбцов для группировки клиентов.

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

Постановка ваших данных действительно неэффективна.Если вы сделали столбец с номером клиента и расширили данные по вертикали, а не по горизонтали, вы могли бы действительно избавить себя от многих головных болей.Например, если ваши данные были организованы таким образом, вы могли бы использовать сводную таблицу, чтобы значительно упростить эту проблему.

Запрет изменений в вашей структуре данных, вы можете сделать vlookup для даты в диапазоне смещения:

=VLOOKUP($D$17,OFFSET('Client PO & Invoice Details'!$A$1,0,MATCH($D$16,'Client PO & Invoice Details'!$1:$1,0)-1,1048575,6),2,FALSE)

Эта формула должна быть помещена в D18: D22 под фильтрами id и даты.вам нужно будет увеличить индекс vlookup ближе к концу формулы (...,2,FALSE), чтобы получить конкретный столбец, который вы ищете. 2 необходимо обновить до 3,4,5 и 6 в последующих формулах, чтобы получитькаждое из значений.

Сначала формула находит ваш номер клиента в строке 1, затем смещение определяет диапазон шириной 6 столбцов, начиная со столбца, в котором был найден номер клиента, наконец, vlookup работает как обычно:найти дату в первом столбце диапазона смещения и вернуть значение индексированного столбца.

...