dynamic插值

我有以下的matrix,请关注Date和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 

可以看出,有时一行的缺失值有时超过一行(缺失的行数是dynamic的)。 我想做一个插值,并使用线性插值计算缺失值。 (该matrix可能包含大量的行)。

最后的结果应该如下:

 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 

我相信你最好的方法是一个带有计算步长参数的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