查找最大发生的代码

我有一个excel表格

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 

在上面我想写一个公式,例如名称“A” – search最大利润,如果该利润碰巧在date中的最大date,然后给第二列中提到的代码。例如对于名称“ A“的最大利润是38500,发生在2016年1月11日,而不是date列中名称为”A“的最新date,因此输出为零。对于名称”B“,最大利润为50000,发生在01/15/2016这恰好在date列中的最后一个date列表中,因此输出是代码列的内容,即1240。

AGGREGATE函数可以在单个或多个条件下快速完成伪MINIFS / MAXIFS。

以H2为标准配方,

 =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测距

上述公式可以改进,以自动补偿添加到现有公式底部的新数据,并进行以下修改。

 =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
AGGREGATEfunction与dynamic范围