VLookUp с вложенными SUMIF - PullRequest
       26

VLookUp с вложенными SUMIF

0 голосов
/ 29 февраля 2020

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

У меня есть эта таблица, в которую я хочу поместить данные в желтую ячейку. На следующем листе у меня есть таблица ниже. Я хочу использовать формулу, чтобы заполнить H4 номером счета «Request Branch». Теперь я заполнил клетки информацией. На самом деле, у них есть опции выпадающего списка, которые извлекаются из таблицы списка учетных записей. В результате значение в H4 будет постоянно меняться в зависимости от потребностей пользователя, но должно находиться в пределах таблицы списка счетов.

enter image description here

enter image description here

То, что я пробовал, это здесь и введите описание ссылки здесь . Я продолжаю получать результат #Value или N / A. Я не могу понять, что я делаю неправильно. Я знаю, что мне нужно вложить SUMIFS в VLookUp, но я не уверен, почему это не сработает.

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

Я предоставляю вам два возможных решения.

1) Первый использует функцию SUMPRODUCT. Возможно, вы раньше не видели такого рода обозначения.

Когда диапазоны умножаются друг на друга, например (B3:B8=G3)*(C3:C8=G4), они фактически превращаются в логические аргументы. Если вы выделите эту часть кода и нажмете F9, это будет выглядеть так: {0;0;0;0;1;0;0}. Это массив, в котором встречаются TRUE для обоих критериев. Таким образом, наша ветвь - это «А», а наш перевозчик - «F». В остальных случаях либо один, либо оба являются ложными, что приводит к нулю.

Теперь, если вы умножите этот массив на диапазон с номерами счетов, очевидно, что единственным оставшимся числом будет число, умноженное на 1, и поэтому ответ однако имейте в виду, что при умножении, если счет не является числом, функция не сработает!

2) Вот почему у нас есть второй метод с использованием функций =INDEX() и =MATCH().

Чтобы упростить это - функция INDEX извлекает содержимое из массива в указанной позиции (строка и столбец), а функция MATCH получает положение элемента в массиве.

Идея использования диапазонов в качестве нескольких критериев такая же, как в первом примере, , однако на этот раз , когда мы получаем наш массив нулей и единиц {0;0;0;0;1;0;0} мы используем функцию сопоставления, чтобы определить, в каком месте наши критерии пересекаются (как показано на скриншоте, это 5-я позиция, поскольку она находится в 5-й строке всего столбца D, th Функция соответствия ищет в массиве {0;0;0;0;1;0;0} значение 1 и возвращает его позицию в массиве), и поэтому это наша строка.

Зная позицию искомого содержимого, мы используем INDEX функция для захвата содержимого ячейки в этой позиции, поэтому =INDEX(D2:D8,MATCH(1, INDEX((B2:B8=G3)*(C2:C8=G4),0),0)) на самом деле =INDEX(D2:D8, 5) означает, что функция INDEX захватывает содержимое 5-й строки из диапазона D2:D8, который является ячейкой D6.

enter image description here Зеленые прямоугольники только для того, чтобы показать случай, когда оба наших критерия выполнены (крест).

0 голосов
/ 29 февраля 2020

Пожалуйста, попробуйте эту формулу.

=INDEX(Table1[Account],SUMPRODUCT((Table1[Branch]=F$3)*(Table1[Carrier]=F$4)*ROW(Table1[Account]))-1)

Обратите внимание, что вам, возможно, придется скорректировать окончательное значение -1. Это связано с тем, что индексированная таблица начинается со строки № 2, а функция SUMPRODUCT возвращает номер строки листа. Если ваша таблица начинается с другой строки, разница между строкой таблицы и строкой таблицы будет больше. Это должно быть скорректировано здесь. Или вы можете работать со ссылками на листы (именованные диапазоны) и вообще не требовать корректировки.

...