利用VBA方法制作明细汇总Excel表格
1、按ALT+F11打开VBE编辑器,单击菜单:工具-引用,弹出 引用-VBAProject对话框。
2、点击浏览,在弹出的添加引用对话框中,找到Scrrun.dll,点击确定,添加字典dll文件库。
3、在VBE编辑器中,新建一个模块,在对应属性窗口,改名为:隐藏显示,粘贴如下代码:垓矗梅硗 Sub hiddhzsj() '喽矫杼埕隐藏汇总数据金额栏值为0的行 Dim rg As Range, flag As Boolean Application.ScreenUpdating = False m = 3 '指定列号 flag = True For i = 5 To 104 '扫描5-104行 If Cells(i, m) = Empty And Rows(i).Hidden = False Then '如果i行第m列的单元值为0或空白则隐藏它 If flag Then Set rg = Rows(i) flag = False Else Set rg = Union(rg, Rows(i)) End If End If Next If flag = False Then rg.EntireRow.Hidden = True End If Application.ScreenUpdating = True End Sub Sub showhzsj() Rows("5:104").Hidden = False End Sub Sub hiddmxsjjx() '隐藏明细数据标记栏不为1的行并加删除线 Dim rg As Range, flag As Boolean Application.ScreenUpdating = False flag = True hl = ActiveSheet.Range("e65536").End(xlUp).Row For i = 108 To hl If Rows(i).Hidden = False And Cells(i, 5) <> 1 Then If flag Then Set rg = Rows(i) flag = False Else Set rg = Union(rg, Rows(i)) End If End If Next If flag = False Then rg.EntireRow.Hidden = True End If Application.ScreenUpdating = True End Sub
4、再新建一个模块,改名为:汇总计算,粘贴如下代码: Sub huizongsj() Dim zd As New Dictionary Dim arr hl 租涫疼迟= ActiveSheet.Range("e65536").End(xlUp).Row hf = ActiveSheet.Range("e107:e" & hl).Find(1, SearchDirection:=xlNext).Row arr = Range("b" & hf & ":e" & hl) For i = 1 To UBound(arr) If arr(i, 4) = 1 Then zd(arr(i, 1)) = zd(arr(i, 1)) + arr(i, 2) Next Range("b5:c104").ClearContents Range("b5").Resize(zd.Count, 1) = Application.Transpose(zd.Keys) Range("c5").Resize(zd.Count, 1) = Application.Transpose(zd.Items) End Sub Sub sjsum() Dim hf As Long, hl As Long, sh As Long, sl As Long hl = ActiveSheet.Range("e65536").End(xlUp).Row hf = ActiveSheet.Range("e107:e" & hl).Find(1, SearchDirection:=xlNext).Row sh = ActiveSheet.Range("b65536").End(xlUp).Row sl = ActiveSheet.Range("b65536").End(xlUp).Column arr = Range("b" & hf & ":e" & hl) For i = 1 To UBound(arr) If arr(i, 4) = 1 Then temp = temp + arr(i, 2) Next Cells(sh, sl).Offset(0, 1).Value = temp End Sub
5、左键单击菜单:视图-工具栏-控件工具箱,在控件工具栏上点选命令按钮,左键拖拉出一个如下所示的CommandButton1按钮。
6、在工具栏上,左键设计模式。
7、在CommandButton1按钮上面,右键,单击属性。
8、在弹出的属性对话框中,将Caption属性改为:汇总数据并显示。
9、在汇总数据并显示按钮上面,右键单击查看代码,在弹出的代码窗口,粘贴如下代码: Private Sub CommandButton1_潮贾篡绐Click() If CommandButton1.Caption = "汇总数据金额为0隐藏" Then hiddhzsj CommandButton1.Caption = "汇总数据并显示" Else showhzsj huizongsj CommandButton1.Caption = "汇总数据金额为0隐藏" End If End Sub
10、单击菜单:视图-工具栏-窗体,在窗体控件栏上点击按钮,拖拉2个按钮,分别改名为:计算实际金额、指定sjsum宏,明细数据加删除线并隐藏、指定hiddmxsjjx宏,效果如下图:
11、具体表格,请依样制作或者前往http://pan.baidu.com/share/link?shareid=1762576984&uk=1996803567下载演示文档,具体效果如下图: