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

时间:2015-07-06 17:35:53

标签: excel

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

= MATCH(C12,B2:B12,0)

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

enter image description here

编辑1:为了澄清,匹配功能完成了我想要做的90%,但这些重复项除外。这里有更多数据,突出显示我唯一的错误是重复: enter image description here

2 个答案:

答案 0 :(得分:1)

您实际需要的是伪MAXIF函数。

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

这将返回行号(因为范围内的位置会像MATCH function那样)。要从列A中检索日期,这将是

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

可以使用SMALL functionLARGE function代替MAX function检索中间值(如果超过两个)。

根据您自己的目的进行转录时,请记住ROW(1:11)是 B2:B12中的位置,而不是工作表上的实际行。返回的数字类似于类似MATCH函数返回的数字。

编辑 - 浮动最后11个值:

要捕获最后11个值,应从列B和C单元格范围引用中删除绝对行引用。

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

Float last 11 values

答案 1 :(得分:1)

怎么样:

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

你需要使用ctrl + shift + enter来输入数组。