获取Excel中每个具有相同ID的单元格的最后两个date的天数

我有如下所示的数据。

ID Date 8215 3/11/2013 8215 3/11/2011 8215 3/12/2009 8215 3/10/2007 18150 3/1/2013 18150 3/4/2011 18150 3/4/2009 18150 3/1/2008 18150 3/6/2006 

希望的结果:

 ID Num_days 8215 731 18150 641 

我想获得ID为8215的实体的最后两个date的天数。在本例中,ID为18150的天数为731天和641天。当我获得最后两个date的date数很难有超过7万个实体。 我怎样才能做到这一点,所以我可以稍后计算平均值?

如果您从列D中的唯一ID列表开始,这应该工作。 不需要sorting:

 =LARGE(IF($D2=$A:$A,$B:$B),1)-LARGE(IF($D2=$A:$A,$B:$B),2) 

Ctrl+Shift+Enter

限制范围$A:$A$B:$B会更快。

编辑:我把“最后两个date”解释为“最近的两个date”。 另一种解释可能是“有序降序列表中最近的两个条目”。 在后面的解释中用这个来代替:

 =SMALL(IF($D2=$A:$A,$B:$B),2)-SMALL(IF($D2=$A:$A,$B:$B),1) 

我不确定我是否理解你的要求,但会像这样:

 =IF(A2<>A1,B2-B3,"") 

复制下来以适合服务?

假设ID在列A中,并且date在列B中,您可以创build列C,以使第2行为:

 =(A2=A1) * (A2<>A3) * (B2-B1) 

如果ID与前一行相同,则第一部分(A2 = A1)返回1,否则返回0。 如果ID与下一行不相同,那么下一个部分返回1(如果你在ID的最后一行,那么你有1,否则为0),最后一部分(B2-B1)得到两个date之间的天数。 这将返回0或天数

即使没有sorting,这个工作。 这是一个数组公式,根据条件得到两个最大的date并计算差异。

 =MAX(IF(A:A=8215,B:B))-LARGE(IF(A:A=8215,B:B),2) 

这是一个数组公式,所以在input时使用Ctrl-Shift-Enter

如果你有一个唯一的列表,更好的办法是改变8215来引用范围,然后拖下来。

截图:

在这里输入图像说明

希望这可以帮助。