Суммирование по столбцам с фиксированной начальной ячейкой до последнего столбца VBA - PullRequest
0 голосов
/ 25 июня 2018

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

'Sums everything starting from "L16" to the last row in column L and drags formula across the last row until the last column
Range(Cells(LR, "L"), Cells(LR, lastcol)).Formula = "=sum(L16:L" & LR - 1 & ")"
'Doesn't work but I want it to sum everything starting from "L16" to the last column in row 16 and drag the formula to the last row
Range(Cells(16, lastcol), Cells(LR, lastcol)).Formula = "=sum(L16:16" & lastcol-1 & ")"

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Не уверен, где ваши данные начинаются, но это можно установить с помощью iStartCol & iStartRow.Он поместит формулу суммы в конце каждой строки и столбца, а также общий итог.

Sub Test()
Dim iStartCol As Long
Dim iStartRow As Long
iStartCol = 2       ' Starting Column of your Data
iStartRow = 11      ' Starting Row of your Data

Dim iTotalCol As Long   ' Find where the Total Column will be
iTotalCol = Sheet1.UsedRange.Columns.Count + 1

Dim iTotalRow As Long   ' Find where the Total Row will be
iTotalRow = Sheet1.UsedRange.Rows.Count + 1

' Total Row
Sheet1.Range(Cells(iTotalRow, iStartCol), Cells(iTotalRow, iTotalCol - 1)).Formula = "=Sum(R[-" & iTotalRow - iStartRow & "]C:R[-1]C)"

' Total Cols
' Note: no -1 in Range so we will also sum the Total Row, for grand total
Sheet1.Range(Cells(iStartRow, iTotalCol), Cells(iTotalRow, iTotalCol)).Formula = "=Sum(RC[-" & iTotalCol - iStartCol & "]:RC[-1])"
End Sub
0 голосов
/ 25 июня 2018

Здесь есть синтаксическая ошибка =sum(L16:16" & lastcol-1 & "), вам нужна буква столбца перед номером строки.

Если ваш lastcol не больше 27, вы можете использовать следующий оператор:

Range(Cells(16, lastcol), Cells(LR, lastcol)).Formula = "=sum(L16:" & Chr(lastcol - 1 + 64) & "16)"

Либо добавьте эту функцию в ваш проект:

Function ColLetter(Col As Long) As String
    Dim vArr
    vArr = Split(Cells(1, Col).Address(True, False), "$")
    ColLetter = vArr(0)
End Function

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

Range(Cells(16, lastcol), Cells(LR, lastcol)).Formula = "=sum(L16:" & ColLetter(lastcol - 1) & "16)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...