确定最长有效序列的开始年份

时间:2019-04-28 02:30:35

标签: excel

我需要返回最长的有效数据系列的开始年份。我有以下数据:

     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。如何实现呢?谢谢。

2 个答案:

答案 0 :(得分:1)

我将假设您正在使用并描述为简单明了的公式是这样的:

=INDEX(B1:N1,,MATCH(MAX(B2:N2),B2:N2,0))

enter image description here

该公式无法检查第二行中的值是否正确排序,因此在建议开始年份的公式时,我将假设所有序列均有效:

=INDEX(B1:N1,,MATCH(MAX(B2:N2),B2:N2,0)-MAX(B2:N2)+1)

上面的方法基本上获得了先前使用的结束年份的列号,并减去了序列中的最后一个值以获得开始年份。

enter image description here

如果必须检查序列的有效性,则第一个公式将不起作用(第二个公式也不起作用)。我认为这样做不够直接,以至于没有一个公式足以满足要求,但是使用辅助行来标识有效的序列(在序列的值和下一个值之间进行简单的减法运算)肯定可以实现。

答案 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) )