2016-01-18 2 views
0

у меня есть лист первенствовать как поднайти код, на котором максимум произошедшего

Name Code Date Profit on particular day  Name Output 
A 2400 1/11/2016 38500  A Nil 
A 2300 1/14/2016 26750  B 1240 
A 2200 1/14/2016 21250  C 95 
A 2300 1/11/2016 19250   
A 2250 1/14/2016 14000   
A 2100 1/14/2016 11750   
B 1220 1/15/2016 750   
B 1280 1/11/2016 4875    
B 1360 1/12/2016 4875    
B 1380 1/11/2016 4500    
B 1320 1/11/2016 3375    
B 1280 1/12/2016 2250    
B 1340 1/11/2016 2250    
B 1340 1/14/2016 2250    
B 1240 1/15/2016 50000   
B 1260 1/15/2016 0   
C 85 1/14/2016 324000   
C 85 1/13/2016 282000   
C 85 1/11/2016 246000   
C 95 1/15/2016 6000000   
C 90 1/12/2016 156000   
C 90 1/14/2016 138000   

В приведенных выше я хочу написать формулу таким образом, что, например, имя -Поиска максимальной прибыль «А», если прибыль произошла чтобы быть на дате максимума среди дат, затем дать код, как указано в столбце 2. Например, для максимальной максимальной прибыли «А» составляет 38500, которая происходит 1/11/2016, которая не является последней датой среди столбца даты против имени " A "так что выход равен nil.For имя" B "максимальная прибыль составляет 50000, которая возникает на 01/15/2016, которая находится на последней дате среди столбца даты против имени B, поэтому выход является содержанием столбца кода, т.е. 1240.

+0

Итак, ваше ожидание, если дата последней даты, а затем показать максимальные данные для конкретного имени, иначе показать Nil? – harun24hr

ответ

1

AGGREGATE function выполняет быструю работу псевдоминификатора/MAXIFS с одним или несколькими условиями.

В Н2 в качестве стандартной формулы,

=IFERROR(AGGREGATE(15, 6, B$2:B$23/((A$2:A$23=G2)* 
            (C$2:C$23=AGGREGATE(14, 6, C$2:C$23/(A$2:A$23=G2), 1))* 
            (D$2:D$23=AGGREGATE(14, 6, D$2:D$23/(A$2:A$23=G2), 1))), 1) 
     ,"nil") 

aggregate_minifs_maxifs
AGGREGATE function, как MINIFS и MAXIFS

Dynamic ranging

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

=IFERROR(AGGREGATE(15, 6, B$2:INDEX(B:B, MATCH(1E+99,D:D))/((A$2:INDEX(A:A, MATCH(1E+99,D:D))=G2)* 
    (C$2:INDEX(C:C, MATCH(1E+99,D:D))=AGGREGATE(14, 6, C$2:INDEX(C:C, MATCH(1E+99,D:D))/(A$2:INDEX(A:A, MATCH(1E+99,D:D))=G2), 1))* 
    (D$2:INDEX(C:C, MATCH(1E+99,D:D))=AGGREGATE(14, 6, D$2:INDEX(D:D, MATCH(1E+99,D:D))/(A$2:INDEX(A:A, MATCH(1E+99,D:D))=G2), 1))), 1) 
    ,"nil") 

aggregate_minifs_maxifs_dynamic_range
AGGREGATE function с динамическим диапазоне

+0

Спасибо большое. Ты гений. – piknooselvan

+0

Сэр, ваша формула просто превосходна. Если вы можете помочь, то количество строк в данных ограничено 23, где, как и в моем случае, количество строк будет добавляться каждый день, не ограничиваясь этим. 23. Пожалуйста, помогите дальше ? .Regards – piknooselvan

+0

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

Смежные вопросы