在每个组之后插入行,并根据组对列的特定内容求和

时间:2018-03-18 16:46:36

标签: excel vba excel-vba openpyxl

我在连续行中有数据,但是它们在名称列中排序,即(现在是' A'现在但可能会更改)

>    A      B   C
>     Name1 123 rdt
>     Name1 256 efh
>     Name1 456 ikj
>     Name2 123 rfa
>     Name3 654 xxd
>     Name3 846 olp
>     Name6 841 yuf

我想在每组名称之后插入一行(或两行,任意数量的行),即和总和' B'

  A     B   C
    Name1   123 rdt
    Name1   256 efh
    Name1   456 ikj
        =sum(above number of Name1s)
    Name2   123 rfa
        =sum(above number of Name2s)
    Name3   654 xxd
    Name3   846 olp
        =sum(above number of Name3s)
    Name6   841 yuf

我对这个问题有类似的问题 AWK:在每组数据后插入一行 AWK: Insert a row after each group of data,但使用Excel。

另外,是否可以使用openpyxl在Python中执行此操作,如果是这样的话?请!

谢谢

1 个答案:

答案 0 :(得分:0)

快速而肮脏

Option Explicit

Sub main()
    Dim i As Long
    Dim sum As Double

    With Range("A1").CurrentRegion
        i = 1
        Do
            If .Cells(i + 1, 1) = .Cells(i, 1) Then
                sum = sum + .Cells(i, 2)
                i = i + 1
            Else
                sum = sum + .Cells(i, 2)
                i = i + 1
                .Rows(i).Insert xlDown
                .Cells(i, 2).Value = sum
                i = i + 1
                sum = 0
            End If
        Loop While i <= .Rows.Count
    End With
End Sub