Excel: агрегатная функция в сочетании с функцией IF - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть формула Excel У меня возникли проблемы с.Я искал ответ в Google и YouTube, но, похоже, не нашел его.

В Excel я использую статистическую функцию с двумя критериями.На основании «Location» и «функции» Я в состоянии извлечь записи из бесконечных строк и столбцов данных.

1004 * У меня есть выпадающий список для обоих Место и функции.Для «Местоположения» я хочу иметь возможность выбирать между:

Без выбора, Амстердам, Париж, Лондон и Мадрид.

Для «Функции» я хочу иметь возможность выбирать между:

Нет выбора, Банкир, Банкир II и Помощник.

Я использую следующую формулу:

=IF(ROWS(M$2:M2)>$I$6;"";INDEX(source[Name];AGGREGATE(15;6;(ROW(source[Name])-ROW(source[#Headers]))/((source[Location]=$I$2)*(source[Function]=$I$3));ROWS(M$2:M2))))

Я хочу иметь возможность извлекать данные на основе двух критериев, но также на основе одного критерия.Вот почему я использую «Нет выбора».Нет, когда я выбираю «Нет выбора» в качестве местоположения, я хочу иметь возможность извлекать данные для всех банкиров во всех местоположениях.

У меня проблема с приведенной выше формулой. Мне нужно выбрать два критерия.Всякий раз, когда я выбрать «No Selection» на одном из раскрывающихся списков он не будет извлекать данные.

1023 * Я знаю, что функция IF может быть использован, но я не могу получить это право.Это школьный проект, я работаю над и мои знания о Excel очень ограничено. 1025 * Ссылка на пример я работаю: https://www.dropbox.com/s/mhsfzv7d63y7rb7/example%281%29.xlsx?dl=0

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

В вашем образце листа:

M2: =IFERROR(INDEX(source,AGGREGATE(15,6,1/(((source[[Location]:[Location]]=$I$2)+($I$2="No Selection"))*((source[[Function]:[Function]]=$I$3)+($I$3="No Selection")))*(ROW(source)-ROW(source[#Headers])),ROWS($1:1)),COLUMNS($A:A)),"")
  • Выберите M2 и заполните до M14

  • Выберите M2:M14и заполните справа.

Обратите внимание, что оператор addition имитирует функцию IF для каждой записи в массиве.т.е. ((source[[Location]:[Location]]=$I$2)+($I$2="No Selection")) вернет 1, если Location = либо имя в раскрывающемся списке, ИЛИ , если раскрывающийся список = No Selection

0 голосов
/ 15 декабря 2018

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

=IF(ROWS(M$2:M2)>$I$6; ""; INDEX(source[Name]; AGGREGATE(15; 6; (ROW(source[Name])-ROW(source[#Headers]))/SIGN((($I$2="No Selection")+(source[Location]=$I$2))*(($I$3="No Selection")+(source[Function]=$I$3))); ROWS(M$2:M2))))
...