我正在处理Excel中的时间序列数据,以便向程序员传达一些计算结果。我试图返回数组中最后一个最大值的索引位置。我一直在使用match()函数,如单元格D12:
= MATCH(C12,B2:B12,0)
返回值1,因为126.47在数组中的1和7位置重复。我真正想要返回的是7,即最后一个最大值的位置。我查看了index()和lookup()函数,但没有成功。谢谢你的帮助!
编辑1:为了澄清,匹配功能完成了我想要做的90%,但这些重复项除外。这里有更多数据,突出显示我唯一的错误是重复:
答案 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 function或LARGE function代替MAX function检索中间值(如果超过两个)。
根据您自己的目的进行转录时,请记住ROW(1:11)
是 B2:B12中的位置,而不是工作表上的实际行。返回的数字类似于类似MATCH函数返回的数字。
编辑 - 浮动最后11个值:
要捕获最后11个值,应从列B和C单元格范围引用中删除绝对行引用。
=MAX(INDEX(ROW($1:$11)*(B2:B12=C12), , ))
答案 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来输入数组。