返回匹配的最后一个索引值()

我正在使用Excel中的时间序列数据来向我们的程序员传达一些计算结果。 我卡住试图返回数组中最后一个最大值的索引位置。 我一直在使用match()函数,就像在单元格D12中一样:

= MATCH(C12,B2:B12,0)

这将返回值1,因为126.47在数组1和7的位置重复。 我真正想要返回的是7,最后一个最大值的位置。 我已经查看了index()和lookup()函数,但没有成功。 感谢您的帮助!

在这里输入图像说明

编辑1:为了澄清,匹配function做了我想要做的90%,除了这些重复。 这里是更多的数据,以突出我唯一的错误是与重复: 在这里输入图像说明

你正在寻找的是一个伪MAXIF函数。

=MAX(INDEX(ROW($1:$11)*($B$2:$B$12=$C$12), , )) 

这将返回行号(因为在MATCH函数范围内的位置)。 从列A检索date这将是,

 =INDEX($A$2:$A$12, MAX(INDEX(ROW($1:$11)*($B$2:$B$12=$C$12), , ))) 

使用SMALLfunction或LARGEfunction代替MAXfunction,可以检索中间值(如果有两个以上)。

在为自己的目的进行转录时,请记住ROW(1:11)是B2:B12中的位置 ,而不是工作表上的实际行。 返回的号码与类似的MATCHfunction返回的号码类似。

编辑 – 浮动最后11个值:

为了捕获最后的11个值,绝对行引用应该从列B和C单元格区域引用中移除。

 =MAX(INDEX(ROW($1:$11)*(B2:B12=C12), , )) 

浮动最后11个值

怎么样:

 =MAX(IF(C12=$B$2:INDEX(B:B,COUNTA(B:B)),ROW($B$2:INDEX(B:B,COUNTA(B:B)))))-1 

您将需要按Ctrl + Shift + Enter进入数组。