我试图创建一个按月分组数据的宏:例如,如果客户A的2月有3个条目,那么它会将这三个条目合并为一个并对金额求和。
我有:
答:客户名称
B:发票编号
C:结算月
D:货币
E:充电金额
F:发票步骤
我要做的是将以下内容分组到一行中,并添加发票金额,并将这三行替换为仅一行。这些条目适用于单个客户端(因此分组取决于A列中的值)。
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多个客户端,一些每月有许多发票),原始数据使用宏进行排序,这是然后粘贴到其他床单。从枢轴中粘贴将更加困难。
答案 0 :(得分:1)
代码之后:
以下是代码:
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