计算与上一个值的差异
我的数据格式与下表中列出的格式类似:
我需要计算(在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,然后拖/填。