如何动态地对缺少值的行中的数据进行线性插值?

时间:2017-08-25 21:42:49

标签: excel excel-formula

我有这个数据

Date    Data
8/25/2017   980
8/24/2017   64
8/23/2017   593   
8/22/2017   595
8/21/2017   
8/20/2017   
8/19/2017   794
8/18/2017   437
8/17/2017   
8/16/2017   
8/15/2017   
8/14/2017   629

如果我想要(794-595)/ 3在8月21日和8 *(794-595)/ 3在8月22日和8月17日同样(629-437)/ 4,2 *(629- 437)/ 4月16日等...

如何动态执行此操作,而不考虑

之间缺失值的数量

1 个答案:

答案 0 :(得分:1)

下面的代码提供了一个解决方案,动画gif显示了解决问题的代码。当然,有很多方法可以解决这个问题,但这很简单。至少这会显示您需要哪些输入。它假定x值增加1(与数据中一样)。否则你需要使用像斜坡和放大器这样的东西。拦截功能。

enter image description here

Option Explicit
Sub interpolate()
Dim r As Range, cell As Range
Set r = Application.InputBox("select interpolation range", , , Type:=8)
For Each cell In r
  If cell = "" Then
    cell = r(1) + (r(r.Rows.Count) - r(1)) * (cell.row - r.row) / (r(r.Rows.Count).row - r(1).row)
  End If
Next
End Sub