利用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下载演示文档,具体效果如下图: