Сумма переменного диапазона - PullRequest
0 голосов
/ 02 мая 2020

У меня нет опыта работы с VBA, и я хочу разработать обобщение столбца A в столбце B, заблокировав последний столбец, например ::

B3 = A3:$A$10 
B4 = A4:$A$10 

A     B
10    55
9     45
8     36
7     28
6     21
5     15
4     10
3     6
2     3
1     1

Я пытался использовать al oop (для), но мне не удалось (см. строку до конца, если)

For age = 1 To Table_lastRow
            If age < 4 Then
                Table.Cells(age, 25).Value = ""
            ElseIf age = 4 Then
                Table.Cells(age, 25).Value = "Nx"
            ElseIf age >= 5 Then
                Table.Cells(age, 25).Value = WorksheetFunction.Sum(Range("X5:X" & Table_lastRow))
            End If
        Next age

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Мне нравится использовать функцию .Resize() для расширения ячейки в таблицу.

Этот код даст желаемый результат:

Public Sub RunningSum()

    ' Define input and output ranges
    Dim r_A As Range, r_B As Range
    Set r_A = [D7]
    Set r_B = [E7]

    Dim i As Long, n As Long

    ' Find how many rows are filled
    If IsEmpty(r_A) Then
        n = 0
    ElseIf IsEmpty(r_A.Offset(1, 0)) Then
        n = 1
    Else
        n = Range(r_A, r_A.End(xlDown)).Rows.Count
    End If

    ' Loop to fill "B" values
    For i = 1 To n
        r_B.Cells(i, 1).Value2 = _
            WorksheetFunction.Sum(r_A.Cells(i, 1).Resize(n - i + 1, 1))
    Next i

End Sub

scr

0 голосов
/ 03 мая 2020

диапазон («a1», «a100») равен диапазону («a1: a100»)

, который вы можете использовать ниже двумя способами.

Range("X" & age, "X" & Table_lastRow)

или

Range ("X" & age & ":X" & Table_lastRow)

весь код

    For age = 1 To Table_lastRow
        If age < 4 Then
            Table.Cells(age, 25).Value = ""
        ElseIf age = 4 Then
            Table.Cells(age, 25).Value = "Nx"
        ElseIf age >= 5 Then
            Table.Cells(age, 25).Value = WorksheetFunction.Sum(Range("X" & age, "X" & Table_lastRow))
        End If
    Next age
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...