2014-01-08 131 views
0

我有一個數據庫,其中包含臨時系統脫機引起的不同單元格中的「不適用」。 我用以下圖像顯示的公式填充這些「N/A」:Excel VBA - 使用可變範圍公式填充空數據庫單元格

正如您所看到的,A列的數據是累積的,B和C也是如此。「N/A」 s通過擴大第一個「N/A」之前的最後一個讀數與最後一個「N/A」之後的第一個讀數之間的差值來補償。「N/A」出現在不同的點並且具有不同的長度。

是否有一個vba代碼可以幫助我在整個數據庫中單擊一次? 謝謝你的親切幫助。

+0

VBA當然可以用來解決這個問題,但我認爲你需要明確你想要做的更清楚的事情。例如,你爲什麼看看B6和B3之間的N/A單元?是因爲你在A4和A5有N/A嗎?你說價值是累積的,但這對我來說並不是很清楚。 – Roberto

+2

你嘗試過什麼嗎?如果是,發生了什麼:如果不是,那麼爲什麼不試一試,看看會發生什麼? –

+0

哦,廢話先生我的錯誤,公式使用列A的單元格,而不是列B.這裏顯示的數據是功耗讀數,所以下一個單元格值包含從前一小時+指定小時的消耗的功耗。 – user3171406

回答

0

你可以嘗試運行此VBA代碼進行插值基於上面和下面號碼N/A值:

Sub FillNA() 

Dim rng As Range, col As Range, a As Range 
Set rng = Cells.SpecialCells(xlCellTypeConstants, xlTextValues) 

For Each col In ActiveSheet.UsedRange.Columns  
    If Not Intersect(rng, col) Is Nothing Then 
     For Each a In Intersect(rng, col).Areas 
      If a(1) = "N/A" Then 
       a(0).Resize(a.Count + 2).DataSeries Trend:=True 
      End If 
     Next a  
    End If 
Next col 

End Sub 

(如果N/A出現在範圍的開始或結束時,您將需要以決定如何處理這種情況並作出適當的調整)

+0

哇這個作品難以置信的好!非常感謝!但是當我第二次運行它時(當所有的N/A被刪除)它會返回一個錯誤。此外,這段代碼非常棒,但我對excel vba真的很陌生,並且想了解您使用過的代碼行。你應該選擇我正在編寫的代碼。它比你的尺寸大10倍,但只適用於單個N/A,其頂部和底部的值爲 – user3171406

+0

以vba開頭的一個好方法是打開宏記錄器。對於顯示的示例,您可以選擇範圍'A3:A6',然後選擇'填充>系列>趨勢(檢查)'以填充'A4:A5'中的N/A值。要選擇所有的N/A,請選擇Find&Select> Goto Special> Constants:Text'。代碼基於循環這些值,如果沒有N/As,您將收到一條錯誤消息。 –

相關問題