一天所需的最低/最高利润

时间:2016-01-19 03:45:45

标签: excel excel-formula excel-2010

我的数据在

下面
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.此外,数据每天都在添加,代码列可能是数字或文字。

1 个答案:

答案 0 :(得分:1)

原始AGGREGATE function正在使用其LARGESMALL子功能直接返回真实数字。如果您需要返回基于文本的结果,则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")

根据需要填写。

aggregate_max_min_stock_codes