动态插值

时间:2016-01-19 08:21:09

标签: excel interpolation

我有以下矩阵,请与Date an Value列相关:

Date                   Value    Date Diff  Hours Diff
    29/12/2014 8:00     24.940      
    29/12/2014 9:00     24.960  0.04          1
    29/12/2014 10:00                          1
    29/12/2014 11:00    25.020  0.08          1
    29/12/2014 12:00                          1
    29/12/2014 13:00                          1
    29/12/2014 14:00                          1
    29/12/2014 15:00    25.070                1

可以看出,有时一条线有时多于一条线缺失值(缺失线的数量是动态的)。我想进行插值并使用线性插值计算缺失值。 (矩阵可能包含大量行)。

最终结果如下:

Date                   Value    Date Diff  Hours Diff
    29/12/2014 8:00     24.940      
    29/12/2014 9:00     24.960  0.04          1
    29/12/2014 10:00    24.99                 1
    29/12/2014 11:00    25.020  0.08          1
    29/12/2014 12:00    25.0325               1
    29/12/2014 13:00    25.045                1
    29/12/2014 14:00    25.0575               1
    29/12/2014 15:00    25.070                1

1 个答案:

答案 0 :(得分:1)

我相信您的最佳方法是使用计算 Step 参数的Range.DataSeries方法。

Sub seriesFill()
    Dim rng As Range

    With Worksheets("Sheet11")
        With .Cells(1, 1).CurrentRegion
            Set rng = .Cells(.Rows.Count, 2)
            Do While CBool(Application.CountBlank(.Columns(2)))
                With .Range(rng, rng.End(xlUp))
                    .DataSeries Rowcol:=xlColumns, Type:=xlLinear, _
                                Step:=(.Cells(.Cells.Count).Value2 - .Cells(1).Value2) / (.Rows.Count - 1)
                End With
                Set rng = .Cells(.Rows.Count, 2).End(xlUp)
            Loop
        End With
    End With
End Sub

您的结果应与以下内容类似。这可以通过主页►编辑►填充►系列命令手动应用,但大量重复使子过程成为更可行的方法。

dataSeries_Fill