Я удивлен, что нет ответа на это. Я прочитал Настройка динамических диапазонов в VBA и Выбор динамического диапазона и Автозаполнение динамического диапазона последней строки и последнего столбца и MSDN
У меня есть несколько различных диапазонов на листе с различными размерами. Я пытаюсь подвести итоги column L
. Я могу сделать это, используя жестко запрограммированную сумму (через переменную subtotal
), но вместо этого я хочу вставить формулу в ячейку. Это требует знания начальной и конечной строк для каждого диапазона. Мой код почти работает. Сбой, когда диапазон состоит только из одной строки. Несмотря на это, я чувствую, что должен быть разумный способ сделать это.
Как определить начальную и конечную строку диапазона на листе, заполненном несколькими диапазонами?
For i = 2 To j
If .Cells(i + 1, "L") = "" And .Cells(i + 2, "L") = "" Then
b = .Cells(i - 1, "J").End(xlUp).Row
End If
subtotal = subtotal + .Cells(i, "L").Value2
If .Cells(i, 1) = "" And .Cells(i - 1, "B") <> "" Then
If .Cells(i - 1, "K") = 0 Then
.Cells(i, "K").Value2 = "Check Payment"
'Set sumRng = .Range(.Cells(b, "L"), .Cells(i - 1, "L"))
.Cells(i, "L").Formula = "=sum(L" & b & ":L" & i - 1 & ")"
.Cells(i - 1, "L").Borders(xlEdgeBottom).LineStyle = xlContinuous
total = total + subtotal
subtotal = 0
ElseIf .Cells(i - 1, "K") = "Checking" Then
.Cells(i, "K").Value2 = "EFT Payment"
'Set sumRng = .Range(.Cells(b, "L"), .Cells(i - 1, "L"))
.Cells(i, "L").Formula = "=sum(L" & b & ":L" & i - 1 & ")"
.Cells(i - 1, "L").Borders(xlEdgeBottom).LineStyle = xlContinuous
total = total + subtotal
subtotal = 0
End If
End If
Next
![enter image description here](https://i.stack.imgur.com/OjX3t.png)