我的数据在
下面Name Code Code Date Profit Name Maximum Minimum
A 2400 1/11/2016 38500 A nil 2100
A 2300 1/14/2016 26750 B aaa 1260
A 2200 1/14/2016 21250 C nil 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 bbb 1/11/2016 3375
B 1280 1/12/2016 2250
B 1340 1/11/2016 2250
B 1340 1/14/2016 2250
B aaa 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 200
C 90 1/12/2016 156000
C 90 1/14/2016 138000
在上面我想写一个公式,例如name" A" - 搜索最大利润,如果该利润恰好是日期中的最大值,则按照第二列中的说明给出代码。例如,对于名称" A"最大利润是38500,发生在2016年1月11日,这不是日期栏中与姓名相关的最新日期" A"所以输出为零。类似地,我想找到B的最小值,例如B的最小利润为0(零),这恰好发生在日期的最新日期,因此它打印1260.此外,数据每天都在添加,代码列可能是数字或文字。
答案 0 :(得分:1)
原始AGGREGATE function正在使用其LARGE和SMALL子功能直接返回真实数字。如果您需要返回基于文本的结果,则AGGREGATE必须返回匹配值的ROW个数字并将其传递给INDEX function。
在H2中作为标准配方,
=IFERROR(INDEX(B:B, AGGREGATE(15, 6, ROW(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")
根据需要填写。