计算与上一个值的差异

我的数据格式与下表中列出的格式类似:

例

我需要计算(在B栏)A列(如果有一个)和第一个出现在这个数字上面的数字之间的差异 – 也在A栏中。

对于上面的例子:

B2-B4将包含#N/A而B5将包含-1 (如9-10 = -1)。

B6-B8将包含#N #N/A而B9将包含-1 (如8-9 = -1)。

等等

在这个例子中,我尝试使用一系列如下的IF函数:

 =IF(A5=NA(),"",A5-(IF(A4=NA(),IF(A3=NA(),IF(A2=NA(),IF(A1=NA(),"",A1),A2),A3),A4))) 

但它不起作用(因为我认为这几乎是无稽之谈),而我的实际数据集在A列中的值之间可能有很大的差距。

我知道我可以在#N/A列中过滤#N/A并进行一个简单的计算 – 但是我希望能有一个适用于整列的公式,因为数据可能会改变。

有什么build议么?

非arrays解决scheme:

在列A和列B之间插入一列以使用此公式从单元格B2开始追踪最近的数值:

 =IF(ISERROR(A2),B1,A2) 

将该公式拖到数据集的底部。

在下一列中,插入此公式,从单元格C2开始:

 =IF(COUNT($A$2:A2)<2,"",IF(ISERROR(A2),"",A2-B1)) 

将此公式拖到数据集的底部。

现在,您将在A列中随时显示数值差异(-1),并在A列中存在错误值时显示空白单元格。

您可以使用以下数组公式:

 =IF(ISERROR(A2),NA(),A2-INDEX(A:A,MATCH(2,IF(ISNUMBER($A$1:A1),1)))) 

作为一个数组公式,在退出Edit模式而不是Enter时,需要使用Ctrl-Shift-Enter确认。 如果正确完成,则Excel将在公式周围放置{}

放入B2,按Ctrl-Shift-Enter,然后拖/填。

在这里输入图像说明