2014-04-07 191 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

相關問題