2014-09-05 1 views
-3

Я пытаюсь создать макрос, где будут некоторые значения из D2, пока не будет пустая ячейка, а затем переместите два шага вниз и продолжите этот процесс в цикле. Код, который я сделал, продолжал добавлять постоянное количество ячеек и двигаться вниз, но я хочу, чтобы этот диапазон был динамическим. может кто-нибудь, пожалуйста, помогите мне с этим.Код VBA для суммирования значений в диапазоне, который не является постоянным

Sub Macro4() 
' 
' Macro4 Macro 
' 

' 
Range("D2").Select 
Selection.End(xlDown).Select 
ActiveCell.Offset(1, 0).Range("A1").Select 
ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" 
ActiveCell.Offset(2, 0).Range("A1").Select 
Selection.End(xlDown).Select 
ActiveCell.Offset(1, 0).Range("A1").Select 
ActiveCell.FormulaR1C1 = "=SUM(R[-8]C:R[-1]C)" 
Do 
ActiveCell.Offset(2, 0).Range("A1").Select 
Selection.End(xlDown).Select 
ActiveCell.Offset(1, 0).Range("A1").Select 
ActiveCell.FormulaR1C1 = "=SUM(R[-8]C:R[-1]C)" 
Loop Until IsEmpty(ActiveCell.Offset(2, 0)) 
End Sub 


80 
8 
10 
40 
8 
16 
30 
16 
30 
26 
34 
26 
46 
10 
70 

24 
5 
36 
24 
24 
48 
6 
6 


12 
10 
6 
18 
36 
48 
54 
24 

ответ

0

Предполагая, что a является клетка, вы начинаете с, хранятся в виде диапазона, вы хотите следующее

WorksheetFunction.Sum(a, a.End(xlDown)) 

End является код эквивалент ctrl и направление стрелки. Из-за этого я рекомендую выполнить некоторую проверку ошибок вокруг этого, чтобы убедиться, что ячейки не пусты.

UPDATE

Мой первоначальный ответ предположил, что вы justed хотел вычисленное значение в VBA. На основании добавленного кода я хотел бы использовать следующее:

Sub Macro4() 
    Dim cell As Range 
    Dim offset_rows As Long 

    Set cell = Range("D2") 

    Do While Not IsEmpty(cell.Offset(1, 0)) 
     offset_rows = Range(cell, cell.End(xlDown)).Rows.Count 
     Set cell = cell.End(xlDown).Offset(1, 0) 
     cell.FormulaR1C1 = "=SUM(R[-" & offset_rows & "]C:R[-1]C)" 
    Loop 
End Sub 

Обратите внимание, что я вычищен код магнитофона, как selection медленно и имеет тенденцию приводить к странным ошибкам на основе неожиданных вещей, которые выбрали.

+0

Извините, позвольте мне быть более точным. Я пытаюсь сделать макрос, где будут некоторые значения из D2, пока не будет пустая ячейка, а затем переместите два шага вниз и продолжите этот процесс в цикле. Код, который я сделал, продолжал добавлять постоянное количество ячеек и двигаться вниз, но я хочу, чтобы этот диапазон был динамическим. Я также внесла свой вопрос, чтобы поставить свой код. можете ли вы заглянуть в него. –

+0

Hi Degustaf. Спасибо вам за помощь. Я попробовал код, который вы мне дали, но он вычисляет только первый набор. Я добавил небольшой пример того, как выглядит мой столбец D. Теперь код добавляет значения только до 70. Не могли бы вы попробуете еще раз, если можете написать код для добавления всех наборов. Спасибо. –

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

  • Нет связанных вопросов^_^