Макрос VBA, форматирующий таблицу Excel для суммирования по индексу и счету

#vba #excel #macros

#vba #excel #макросы

Вопрос:

У меня есть еще вопросы по форматированию

Я смотрю на лист транзакций, который имеет индекс # (столбец C) и счет # (столбец E). Мне нужно суммировать все записи во всем индексе, а затем иметь возможность суммировать все записи в учетной записи. У меня есть некоторый код, с которым я играл, но я не могу понять, как суммировать записи учетной записи после получения итогов индекса.

 Sub TotalIndex()
'
Dim iRow As Integer, iCol As Integer
Dim oRng As Range
Dim fRow As Integer
Dim lRow As Integer

Set oRng = Range("c4")

iRow = oRng.Row
iCol = oRng.Column
fRow = iRow
Do
'
If Cells(iRow   1, iCol) <> Cells(iRow, iCol) Then
    Cells(iRow   1, iCol).EntireRow.Insert shift:=xlDown
    iRow = iRow   1
    Range("j" amp; iRow).Font.Bold = True
    Range("j" amp; iRow).Value = "Total"
    Range("k" amp; iRow).Font.Bold = True
    lRow = iRow - 1
    Range("k" amp; iRow).Value = "=sum(k" amp; CStr(fRow) amp; ":k" amp; CStr(lRow) amp; ")"
    iRow = iRow   1
    fRow = iRow
Else
    iRow = iRow   1
End If
'
Loop While Not Cells(iRow, iCol).Text = ""
'
End Sub

Sub TotalAccount()
'
Dim iRow As Integer, iCol As Integer
Dim oRng As Range
Dim fRow As Integer
Dim lRow As Integer

Set oRng = Range("e4")

iRow = oRng.Row
iCol = oRng.Column
fRow = iRow


Dim laRow As Long
Dim laCol As Long

    laRow = Cells.Find(What:="*", _
                    After:=Range("A1"), _
                    LookAt:=xlPart, _
                    LookIn:=xlFormulas, _
                    SearchOrder:=xlByRows, _
                    SearchDirection:=xlPrevious, _
                    MatchCase:=False).Row

Do
'
    If Cells(iRow   1, iCol) <> Cells(iRow, iCol) Then
        Cells(iRow   1, iCol).EntireRow.Insert shift:=xlDown
        iRow = iRow   1
        Range("j" amp; iRow).Font.Bold = True
        Range("j" amp; iRow).Value = "Total"
        Range("k" amp; iRow).Font.Bold = True
        lRow = iRow - 1
        Range("k" amp; iRow).Value = "=sum(k" amp; CStr(fRow) amp; ":k" amp; CStr(lRow) amp; ")"
        iRow = iRow   1
        fRow = iRow
    Else
        iRow = iRow   1
    End If

'
Loop While Not Cells(iRow, iCol).Text = ""
'
End Sub
 

У меня код разделен на две функции. Одна из них суммирует индекс, а затем другая функция «пытается» суммировать учетные записи внутри каждого индекса.

Ошибки

Есть предложения?

Комментарии:

1. Итак, как вы можете видеть, как только я нажимаю на следующий индекс, он завершается. Смотрите, я знаю, в чем проблема… Но я пытаюсь понять, как бы я перешел к следующему индексу… На картинке это биология. Я знаю, как это происходит, когда код встречает ячейку, в которой нет ничего, он останавливается.

2. Почему вы используете макрос для этого? Excel имеет встроенную возможность группировки / выделения, и вы можете использовать эту Subtotal() функцию для выполнения того, что вам нужно.

Ответ №1:

Посмотрите на этот учебник, он делает то, что вы хотите сделать, в соответствии с предложением Мусорщика. https://www.youtube.com/watch?v=QuGIlPopVms

Комментарии:

1. Это должен быть комментарий, а не ответ