Минимальное значение в диапазоне с несколькими условиями - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть лист Excel:

A.                         B.                        C.   
X.                         I.                 10/10/2018 06:27:54    
X.                         I.                 12/10/2018 13:00:00
X.                         U.                 12/10/2018 13:01:20
Y.                         I.                 13/10/2018 13:05:40
Y.                         U                  15/10/2018 07:22:23
Y.                         U.                 17/10/2018 08:20:43

Столбец A - это клиент, Столбец B - это активность, C - время начала.

Как получить максимальное значение (столбец C) издеятельность I для клиента X?

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

с использованием стандартной формулы, которая выполняет вычисления, подобные массиву

AGGREGATE

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

=AGGREGATE(14,6,C1:C6/((A1:A6="X")*(B1:B6="I")),1)

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

=AGGREGATE(14,6,C1:C6/((A1:A6=$E2)*(B1:B6=$F2)),1)

enter image description here

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

0 голосов
/ 21 ноября 2018

Нет необходимости в сложных AGGREGATE или противных формулах массива.

Хороший, простой MAXIFS сделает то, что вы хотите:

=MAXIFS($C$2:$C$7,$A$2:$A$7,$E$2,$B$2:$B$7,$F$2)

enter image description here

0 голосов
/ 21 ноября 2018

Я бы сделал это с формулой массива (Ctrl + Shift + Enter):
=MAX((--(A1:A6="X."))*(--(B1:B6="I."))*(C1:C6))

Объяснение:

  • (A1:A6="X.") приводит к массивус TRUE/FALSE значениями, где условие выполняется;
  • -- преобразует это в 1/0
  • , первое * (умножение массива) дает массив с 1/0, гдеоба условия соблюдены;
  • второй * дает массив со всеми значениями из столбца C, который соответствует строкам, в которых выполняются оба условия;
  • MAX приводит к получениюмаксимум.

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

...