我需要返回最长的有效数据系列的开始年份。我有以下数据:
1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007
ID_A 0 0 1 2 3 0 1 2 3 4 5 0 1
使用INDEX(= 2005)可以识别最长的非零序列的结束年份。我遇到的问题是要返回最长的非零序列的开始年份,即2001。如何实现呢?谢谢。
答案 0 :(得分:1)
我将假设您正在使用并描述为简单明了的公式是这样的:
=INDEX(B1:N1,,MATCH(MAX(B2:N2),B2:N2,0))
该公式无法检查第二行中的值是否正确排序,因此在建议开始年份的公式时,我将假设所有序列均有效:
=INDEX(B1:N1,,MATCH(MAX(B2:N2),B2:N2,0)-MAX(B2:N2)+1)
上面的方法基本上获得了先前使用的结束年份的列号,并减去了序列中的最后一个值以获得开始年份。
如果必须检查序列的有效性,则第一个公式将不起作用(第二个公式也不起作用)。我认为这样做不够直接,以至于没有一个公式足以满足要求,但是使用辅助行来标识有效的序列(在序列的值和下一个值之间进行简单的减法运算)肯定可以实现。>
答案 1 :(得分:0)
Jerry beat me to the punch。我写了一部分答案,然后不得不离开一段时间。我觉得这仍然会增加一些内容(即,更长的解释),但是由于我的公式与他的相同,并且因为我认为他是完整且正确的,所以我正在制作此社区Wiki。
因此,我们可以使用5
函数找到最长的非零序列(MAX
)的长度:
=MAX(B2:N2)
然后我们可以在MATCH
函数中使用该值在ID_A行(此处为{{1})中查找该序列的结尾,正如我们从1995年列的11
开始计算的那样):
1
要找到结束年份,请使用=MATCH( MAX(B2:N2) ,B2:N2,0)
中的所有年份返回第11年:
INDEX
要查找开始年份,请以相同的方式使用“ INDEX”,但请倒数5(否,5减1)位:
=INDEX(B1:N1,, MATCH(MAX(B2:N2),B2:N2,0) )