2015-12-09 71 views
0

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

我:

答:客户名称

B:发票号码

C:开票月份

d:货币

E:收费金额

F:发票步骤

Column titles here

我所要做的,就是下面的成单排组,发票金额加在一起,并且只用一行替换三行。这些条目是针对单个客户端的(因此分组取决于列A中的值)。

Example of entries here

EG。客户端A有一个三个条目,客户端B有一个,客户端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

'任何宏建议,我已经在这里看到的对我没有帮助,我不断收到错误,所以我不知道问题是什么。这是我尝试过的那个.....'为你解答为什么你的例子不起作用将是非常有益的。你得到了什么错误和什么线路。 – psubsee2003

+2

您似乎在试图重塑小计。 – pnuts

+1

或者您也可以使用数据透视表(如果您必须使用VBA,则需要编码) –

回答

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 
+0

谢谢!这工作完美。 –

+0

欢迎您! – manu