Как суммировать итоговую строку и нижнюю часть данных - PullRequest
0 голосов
/ 13 июля 2020

Ниже приведены мои строки кода

sub test
    Dim VR As Long
    VR = Range("H" & Rows.Count).End(xlUp).Row
Range("J" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(J2:J" & VR & 
    ")"
Range("L" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(L2:L" & VR & 
")"
Range("M" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(M2:M" & VR & 
")"
Range("N" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(N2:N" & VR & 
")"
Range("O" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(O2:O" & VR & 
")"
Range("P" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(P2:P" & VR & 
")"
Range("Q" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(Q2:Q" & VR & 
")"
Range("R" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(R2:R" & VR & 
")"
Range("S" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(S2:S" & VR & 
")"
Range("T" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(T2:T" & VR & 
")"
Range("U" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(U2:U" & VR & 
")"
Range("V" & Rows.Count).End(xlUp).Offset(2, 0).Formula = "=sum(V2:V" & VR & 
")"
end sub

У меня есть эти строки кода, которые суммируют каждый столбец данных, но как мне суммировать эти ячейки?

Ответы [ 3 ]

1 голос
/ 13 июля 2020

Попробуйте, пожалуйста:

Range("X" & VR + 2).formula = "=sum(J" & VR + 2 & ":V" & VR + 2 & ")"
0 голосов
/ 13 июля 2020

У вас есть диапазон столбцов, по которым вы хотите суммировать. Для каждого столбца вы хотите:

  • суммировать все значения, которые существуют в столбце,
  • записать сумму в 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
0 голосов
/ 13 июля 2020

Не ответ на ваш вопрос, но, вероятно, огромное упрощение, чтобы вставить формулу во все столбцы за один шаг:

Dim VR As Long
VR = Range("H" & Rows.Count).End(xlUp).Row

Dim VR2 As Long
VR2 = VR + 2 ' I'm assuming that you just need to offset the last row by 2

Range("J" & VR2 & ",L" & VR2 & ":V" & VR2).Formula = "=sum(J2:J" & VR & ")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...