宏按月分组数据

时间:2015-12-09 11:00:40

标签: excel vba excel-vba grouping

我试图创建一个按月分组数据的宏:例如,如果客户A的2月有3个条目,那么它会将这三个条目合并为一个并对金额求和。

我有:

答:客户名称

B:发票编号

C:结算月

D:货币

E:充电金额

F:发票步骤

Column titles here

我要做的是将以下内容分组到一行中,并添加发票金额,并将这三行替换为仅一行。这些条目适用于单个客户端(因此分组取决于A列中的值)。

Example of entries here

EG。客户A有Jan的三个条目,Client B有一个,Client C有一个。然后对于二月,客户A有一个,客户B有一个,客户C有两个。

我在这里看到的任何宏观建议对我都没有帮助,我不断出现错误,所以我不知道问题是什么。这是我试过的那个:

Sub Group()

Dim e As Range, a as Range

Set e = Range("C6")
Set c = e.Offset(, 2)

Do
If Evaluate("=month(" & e.Address & ")") <> Evaluate("=month(" & e(2).Address & ")") Then
    e(2).Resize(2, 3).Insert
    e(2).Offset(, 2) = "=sum(" & Range(a, c.Offset(, 2)).Address & ")"
    e(2).Offset(, 2).Font.Bold = 1
    Set e = e.End(4)
    Set c = e.Offset(, 2)
Else
    Set e = e(2)
End If
Loop Until e.End(4).Row = Rows.Count

e(2).Offset(, 2) = "=sum(" & Range(c, e.Offset(, 2)).Address & ")"
e(2).Offset(, 2).Font.Bold = 1

End Sub
编辑:小计和数据透视表不起作用 - 原始数据被粘贴(数千行输入,40多个客户端,一些每月有许多发票),原始数据使用宏进行排序,这是然后粘贴到其他床单。从枢轴中粘贴将更加困难。

1 个答案:

答案 0 :(得分:1)

我按照您的图片编写代码: enter image description here

代码之后:

enter image description here

以下是代码:

Sub TEST()
Dim lastrow As Long

lastrow = Range("A" & Rows.Count).End(xlUp).Row



For i = 6 To lastrow

lastrow = Range("A" & Rows.Count).End(xlUp).Row

    For j = i + 1 To lastrow

            If Range("A" & j) = Range("A" & i) And Range("C" & j) = Range("C" & i) Then

                Range("B" & i) = Range("B" & i) & "," & " " & Range("B" & j)
                Range("E" & i) = Range("E" & i).Value + Range("E" & j).Value
                Rows(j).EntireRow.Delete

            End If

    Next j

Next i



End Sub