2016-10-25 2 views
0

Привет, сообщество переполнения стека и спасибо заранее за всю помощь, которую вы могли мне дать.Создание суммы Loop снизу вниз - VBA - Excel

В настоящее время я пытаюсь создать цикл, чтобы пройти через столбец и создать сумму данных, которая ниже этого, до следующей пустой строки и в следующей пустой строке создайте новую сумму, снова выполнив тот же процесс, пока это мы получаем две пробелы друг за другом.

Приведенный ниже код делает что-то подобное, но в сумме вверх, а не вниз. У кого-нибудь есть решение? Спасибо миллион за вашу помощь.

Dim cell As Range 
Dim offset_rows As Long 

Set cell = Range("O2") 

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

ответ

0

Я слегка подстроил макрос, и теперь он суммируется вниз. Еще раз спасибо за вашу помощь, очень ценю!

Sub SumRowsAbove() 

Dim StartRow As Long Dim SumRow As Long Dim lRow As Long Dim LastRow As Long Dim BlankRowsCtr As Integer Dim FormulaRow As Integer

'изменить на ваше имя листа С Sheets ("MacroPrep")

' find last row with data in column "O" 
LastRow = .Cells(.Rows.Count, "O").End(xlUp).Row 
StartRow = 3 
BlankRowsCtr = 0 

For lRow = 2 To LastRow + 1 
    If Not IsEmpty(.Cells(lRow, "O")) Then 
     SumRow = lRow 
     BlankRowsCtr = 0 
    Else 
     BlankRowsCtr = BlankRowsCtr + 1 

     ' if 2 or more rows are empty >> exit sub 
     If BlankRowsCtr >= 2 Then Exit Sub 

     FormulaRow = StartRow - 1 
     .Cells(FormulaRow, "O").Formula = "=SUM(O" & StartRow & ":O" & SumRow & ")" 
     StartRow = lRow + 1 
    End If 

Next lRow 

End With

Конец Sub

+0

Извините, кажется, что переменная не была принята во внимание в моем сообщении - не знаю, как редактировать - я все еще надеюсь, что это будет полезно для сообщества - спасибо снова Шай! –