У вас есть диапазон столбцов, по которым вы хотите суммировать. Для каждого столбца вы хотите:
- суммировать все значения, которые существуют в столбце,
- записать сумму в 2 ячейки под последней строкой.
В настоящее время вы получаете последнюю строку для столбца H и применяете ее к каждому столбцу, что может быть недопустимым. Только представьте, что последняя строка для столбца H - 25-я, а для столбца J - 27-я. Вы должны записать сумму J2: J25 в ячейку J27 и перезаписать значение в J27.
Поэтому я рекомендую написать l oop над набором столбцов и применить перечисленные выше действия:
cols = Array("J", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V")
rowsCnt = Rows.Count
' This variable will contain sum of all values
totalSum = 0
For i = LBound(cols) to UBound(cols)
lastRow = Range(cols(i) & rowsCnt).End(xlUp)
colSum = Application.Sum(Range(cols(i) & "2"), Range(cols(i) & lastRow))
Range(cols(i) & (lastRow + 2)) = colSum
' Here you sum all column sums
totalSum = totalSum + colSum
Next