2014-04-07 194 views
3

首先,我必须说Excel不是我的交易工具,而且我为不是R用户的人员这样做。这应该是一件容易的事情,但我正在努力寻找一种方法来使用线性插值来填充空白单元格。假设我有一个下面的Excel工作表:使用线性插值法填充空白单元格

Row Date  Interpolated date 
1 09/09/13  
2  
3 15/10/13  
4  
5  
6  
7  
8  
9  
10 03/04/14 

现在我想到非空值从Date复制到Interpolated date,然后通过相邻的非空单元格之间进行内插填充空单元。请注意,Date列中的空值之间的差距是杂乱无章的。结果应该是这样的(这是使用na.approx功能从zoo包R来):

Row Date  Interpolated date 
1 09/09/13 09/09/13 
2 <NA>  27/09/13 
3 15/10/13 15/10/13 
4 <NA>  08/11/13 
5 <NA>  02/12/13 
6 <NA>  26/12/13 
7 <NA>  20/01/14 
8 <NA>  13/02/14 
9 <NA>  09/03/14 
10 03/04/14 03/04/14 

至于我也明白了,这个使用标准Excel函数可能是不可能的,一个也许应该使用VBA宏。我是VBA宏中的一名完全新手。我发现a similar question and solution for it,但我无法将解决方案应用于我的Excel表格。我希望Interpolated date列可以在Date列中更改值时自动更新,或者至少有一个简单的按钮,用户可以按这些按钮更新值。在这种情况下做插值的最简单方法是什么?

PS。这里是R代码,如果这将有助于:

dat <- structure(list(Row = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), Date = structure(c(15957, NA, 15993, NA, NA, NA, NA, NA, NA, 16163), class = "Date")), .Names = c("Row", "Date"), row.names = c(NA, -10L), class = "data.frame") 

library(zoo) 
dat$Interpolated.date <- as.Date(na.approx(dat$Date)) 

回答

2

如果您在通过干预空格分隔栏两个日期,选择单元格(包括两个填满的小区),然后运行这个小小的VBA宏:

Sub DateInterp() 
    Selection.DataSeries Rowcol:=xlColumns, Type:=xlGrowth, Date:=xlDay, _ 
     Trend:=True 
End Sub 
+0

是否可以在不选择单元的情况下自动应用该功能?我在每个标签和12个标签中有大约700行。 – Mikko

+0

这是可能的,但我们需要知道宏应在哪个列中循环。也在哪张纸上。 –

+0

难道不可以说从B到C中选择非空白值?然后将这个宏循环到C中的空单元格中。或者可以先在B中创建一个没有空格的临时数据表。 – Mikko

相关问题