2017-07-31 374 views
1

我試圖使用一個Excel公式,將過去12個月的平均值進行平均並將其與當前月份值進行比較(本例中爲RC[-2]-RC[-1],方差爲30%)。Excel VBA平均值(可變範圍)

問題是行更改,它嵌套在一個循環中。

代碼如下:

Dim i As Long 
Dim o As Double 
Dim p As Double 

'some code here 

For i = 1 To n 
    Selection.Value = "=RC[-2]-RC[-1]" 
    o = ActiveCell.Value 
    p = Application.Formula.Average(Range("RC[-13]", "RC[-2]")) 
    If (o >= (p + p * 3/10)) Or (o < (p + p * 3/10)) Then 
     ActiveCell.Font.Color = vbRed 
    End If 
    ActiveCell.Offset(1, 0).Select 
Next i 

如何定義均沒有單獨的平均函數任何想法?

+3

你能不能展示代碼的其餘部分,這裏的用戶寧願不用'Selection','ActiveCell'和'Select'來給出答案。 –

+0

感謝您的快速回復!沒有任何其他的代碼真的。我試圖實現的是比較2個值,其中一個設置爲前兩列值之間的差值,另一個是同一行的最後12列值。 – CCM

+0

所以你可以讓我們知道,Cell是開始時的「ActiveCell」? –

回答

0

找到一種解決方法與ActiveCell.Offset(0, 1).Value = "=AVERAGE(RC[-13]:RC[-2])"

感謝您的時間傢伙!

1

變化Selection.Value = "=RC[-2]-RC[-1]"變爲Selection.Value = Offset(0, -2).Value - Offset(0, -1).Value

然後,聲明一些範圍變量:Dim rng As Range,然後將其設置爲與範圍從過去12個月的數據,並計算平均值:

Set rng = Range(Selection.Offset(0, -13), Selection.Offset(0, -2)) 
p = Application.Average(rng) 
+0

這是我試圖在邏輯上實現的選擇範圍,但它不起作用。 – CCM

+0

您必須確保在運行此代碼時選擇了正確的單元格。當你選擇例如單元格A1並嘗試運行這個時,你可以偏移-13列,因爲你最終會在-12列......這是一個錯誤。嘗試在你的代碼中包含一些更聰明的方法來引用你想要的單元格。使用'ActiveCell'和'Selection'通常會導致錯誤。 –