Функция индекса соответствия с несколькими критериями и повторяющимися значениями - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь найти выход, используя функцию индексации и сопоставления (я относительно новичок в использовании этой функции) У меня есть база данных с несколькими критериями, а также имеет повторяющиеся значения. У меня есть 3 критерия для индекса и соответствия Имя продавца (дубликаты в поле), месяц и значение больше 0. Я должен выбрать названия магазинов на основе имени продавца, месяца и стоимости.

Outlet Name       salesman Name     Month       Value
Outlet ABC           Tom             Jan         1
Outlet BCD           Tom             jan         2
Outlet XYZ           Marc            Feb         1
Outlet UTR           Tom             Mar         0

Как я могу использовать функцию индекса соответствия для выбора продавца "Том" месяц "Ян" & value > 0

Примечание: Месяц, продавец фиксируется в каждой строке «для ввода имени продавца и Месяц - поля ввода», однако критерий значения фиксируется на «> 0»

1 Ответ

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

Предполагая, что вы просто хотите выбрать первую розетку в случае дубликатов ...

Вы можете использовать INDEX / MATCH / INDEX для выбора на основе нескольких критериев:

=INDEX($A$2:$A$5,MATCH(1,INDEX(($B$2:$B$5=$F2)*($C$2:$C$5=$G2)*($D$2:$D$5>0),0),0))

enter image description here

По сути, это то же самое, что и обычный индекс INDEX / MATCH, однако он использует второй индекс INDEX, чтобы найти индекс, где все требуемые критерии выполняются.

Если вы хотите вернуть оба выхода в случае дубликатов, я бы предложил добавить вспомогательный столбец («Идентификатор выхода») и использовать формулу MINIFS для выбора каждого. Дайте мне знать, если вам нужно уточнить это предложение.

РЕДАКТИРОВАТЬ: ОБНОВЛЕНИЕ НА ОСНОВЕ ДАЛЬНЕЙШИХ ЗАМЕЧАНИЙ

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

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

enter image description here

=IF(
    MINIFS($A$2:$A2,$B$2:$B2, $B3)=0,
    MAX($A$2:$A2)+1,
    MINIFS($A$2:$A2,$B$2:$B2,$B3)
)

Эта формула проверит, был ли идентификатор уже присвоен текущей розетке. Если это так, он будет использовать это. Если это не так, он проверит, какой MAX ID использовался до сих пор, и добавит к нему 1.

Теперь мы можем использовать эти идентификаторы для создания динамического списка идентификаторов, связанных с конкретным продавцом / месяцем / значением:

enter image description here

Основная формула здесь:

MINIFS($A$3:$A$7,$C$3:$C$7,$G$3,$D$3:$D$7,$H$3,$E$3:$E$7,">"&0,$A$3:$A$7,">"&MAX($G$6:$G6))

Остальное просто удалить нули, которые возвращаются, когда у нас больше нет идентификаторов в списке.

Формула MINIFS выбирает самый низкий идентификатор, где продавец - тот, который мы хотим, и месяц - тот, который мы хотим, и значение> 0, и идентификатор больше, чем любой, который уже появляется в нашем списке.

После того, как у нас есть список идентификаторов, очень просто получить название торговых точек, используя INDEX / MATCH. Затем мы можем полностью скрыть идентификаторы, если захотим.

enter image description here

=IFNA(INDEX($B$3:$B$7,MATCH($G7,$A$3:$A$7,0)),"")

IFNA просто для предотвращения ошибок, отображаемых в пустых строках. Если вы предпочитаете, вы можете сделать что-то вроде этого:

=IF($G7="","",INDEX($B$3:$B$7,MATCH($G7,$A$3:$A$7,0)))

Пожалуйста, дайте мне знать, если вам нужно, чтобы я расширился.

...