#excel #vba #sum #formula
#excel #vba #сумма #формула
Вопрос:
У меня есть сотни столбцов (фиксированных) и различное количество строк в зависимости от извлечения данных. У меня есть код, который вводит итоговую формулу в последней строке плюс один. Это работает хорошо. Но у меня так много столбцов, которые мне нужно суммировать. Скажем, для каждого столбца в диапазоне H: EA требуется общая сумма.
Мне нужна более эффективная формула, чем приведенная ниже, но я не уверен, к чему обратиться:
Sheet2.Range("A1").End(xlDown).Offset(1, 25).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1, 26).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1, 27).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1, 28).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1, 28).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1, 29).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1, 30).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
и т.д. и т.п.
Ответ №1:
Вы можете использовать Range.Resize
для записи формулы в несколько столбцов за один шаг:
Sheet2.Range("A1").End(xlDown).Offset(1, 25).Resize(, 7).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Скажем, для каждого столбца в диапазоне H: EA требуется общая сумма
Обратите внимание, что обычный подход заключается в использовании End(xlUp)
для поиска последней строки, и вы можете легко создать ссылку на диапазон вместо использования Resize
:
With Sheet2
Dim lastRow As Long
lastRow = .Cells(.Rows.Count, "H").End(xlUp).Row 1
.Range("H" amp; Row amp; ":EA" amp; lastRow).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
End With
Комментарии:
1. должно быть lastRow для квалификатора столбца H (не строки). Спасибо BigBen. Вы уже дважды помогли мне сейчас.