我在
下有一张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
在上面我想写一个公式,例如name" A" - 搜索最大利润,如果该利润恰好是日期中的最大值,则按照第二列中的说明给出代码。例如,对于名称" A"最大利润是38500,发生在2016年1月11日,这不是日期栏中与姓名相关的最新日期" A"因此输出为零。对于名称" B"最大利润是50000,发生在2016年1月15日,恰好是日期栏中与名称B相关的最新日期,因此输出是代码栏的内容,即1240。
答案 0 :(得分:1)
AGGREGATE function可以快速处理具有单个或多个条件的伪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 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 function,动态范围