2014-09-21 3 views
0

Я пытаюсь написать короткий макрос, который включает строку, которая усредняет диапазон ячеек. В каждом листе, который я хочу запустить макрос в диапазоне ячеек, имеет другую длину.Усреднение различных диапазонов длин в excel с VBA

После запуска макроса ячейка E1 содержит "=AVERAGE(Rng)"

Dim homeSheet As Worksheet 
    Set homeSheet = ActiveSheet 
    Dim lastRow As Long 
    Dim Rng As Range 
    lastRow = Range("A" & Rows.Count).End(xlUp).Row 

    Set Rng = Range("B2:B" & lastRow) 
    Range("E1").Formula = "=Average(Rng)" 
    Range("E2").Formula = "=STDEV(Rng)" 
    Range("E3").Select 
    ActiveWindow.SmallScroll Down:=-2 
End Sub 

Я также попытался

Range("E1").Formula = "=Average(Range("B2:B" & lastRow))" 

, не пытаясь использовать Set Rng = Range("B2:B" & lastRow)

ответ

1

Вы должны использовать Rng.Address в формулах. Попробуйте изменить свой код в этом:

Sub Avg() 
    Dim homeSheet As Worksheet 
    Set homeSheet = ActiveSheet 
    Dim lastRow As Long 
    Dim Rng As Range 
    lastRow = Range("A" & Rows.Count).End(xlUp).Row 

    Set Rng = Range("B2:B" & lastRow) 
    Range("E1").Formula = "=Average(" & Rng.Address & ")" 
    Range("E2").Formula = "=STDEV(" & Rng.Address & ")" 
    Range("E3").Select 
End Sub 

Если вы должны были использовать второй метод, вы пробовали, вы должны изменить эту строку кода:

Range("E1").Formula = "=Average(" & Range("B2:B" & lastRow).Address & ")" 
+0

прекрасно работает, спасибо! – Amos

Смежные вопросы