利用VBA方法制作明细汇总Excel表格

2025-10-20 00:09:10

1、 按ALT+F11打开VBE编辑器,单击菜单:工具-引用,弹出 引用-VBAProject对话框。

利用VBA方法制作明细汇总Excel表格

2、 点击浏览,在弹出的添加引用对话框中,找到Scrrun.dll,点击确定,添加字典dll文件库。

利用VBA方法制作明细汇总Excel表格

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

利用VBA方法制作明细汇总Excel表格

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

利用VBA方法制作明细汇总Excel表格

5、 左键单击菜单:视图-工具栏-控件工具箱,在控件工具栏上点选命令按钮,左键拖拉出一个如下所示的CommandButton1按钮。

利用VBA方法制作明细汇总Excel表格

利用VBA方法制作明细汇总Excel表格

6、 在工具栏上,左键设计模式。

利用VBA方法制作明细汇总Excel表格

7、 在CommandButton1按钮上面,右键,单击属性。

利用VBA方法制作明细汇总Excel表格

8、 在弹出的属性对话框中,将Caption属性改为:汇总数据并显示。

利用VBA方法制作明细汇总Excel表格

9、 在汇总数据并显示按钮上面,右键单击查看代码,在弹出的代码窗口,粘贴如下代码:

Private Sub CommandButton1_Click()

If CommandButton1.Caption = "汇总数据金额为0隐藏" Then

hiddhzsj

CommandButton1.Caption = "汇总数据并显示"

Else

showhzsj

huizongsj

CommandButton1.Caption = "汇总数据金额为0隐藏"

End If

End Sub

利用VBA方法制作明细汇总Excel表格

10、 单击菜单:视图-工具栏-窗体,在窗体控件栏上点击按钮,拖拉2个按钮,分别改名为:计算实际金额、指定sjsum宏,明细数据加删除线并隐藏、指定hiddmxsjjx宏,效果如下图:

利用VBA方法制作明细汇总Excel表格

11、 具体表格,请依样制作或者前往http://pan.baidu.com/share/link?shareid=1762576984&uk=1996803567下载演示文档,具体效果如下图:

利用VBA方法制作明细汇总Excel表格

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢