Excel VBA工作薄内容分类汇总
1、第一步,在工作表内添加按钮,单击然后再工作表内话一个带下合适的按钮。然后如下图选择自己喜欢的颜色。


2、第二步,在按钮中右键添加文字,然后全选文字居中,修改文字大小。

3、第三步,写代码,老规矩,代码内已经写了注释。
Sub 分类汇总()
'欢迎转载文章及关注微信公众号 -ExcelVBA自动办公免费实例与定制
'作者-无知不自由
'**************************************************************
'定义一个数组变量
Dim arr
Dim rs As Integer
'获取汇总数据的最后一行
rs = Sheets("汇总").Cells(Rows.Count, 4).End(xlUp).Row
'将数据存放到数组
arr = Sheets("汇总").Range("a4:p" & rs)
'获取
'wjwz = ActiveWorkbook.Path
'pch1 = Split(wjwz, "\")
'pch = pch1(UBound(pch1))
Dim ARR1(57, 3)
'创建一个字典对象
Set d = CreateObject("Scripting.Dictionary")
'UBound(arr)即是求取数组的行数(按表格行列来理解)
For i = 1 To UBound(arr)
' 获取订单号
ddh = arr(i, 1)
If ddh <> "" Then
' 获取颜色,厚度
ys = arr(i, 6) & "mm_" & arr(i, 10)
' 计算板材平方数
pfs = arr(i, 4) * arr(i, 5) * arr(i, 7) / 1000000
' 将分类汇总的条件合并
aa = ddh & "-" & ys
' 判断字典内是否有此关键字
If d.Exists(aa) Then
' 将板材平方数与对应的订单号,颜色相加汇总
d.Item(aa) = d.Item(aa) + pfs
pfs1 = d.Item(aa)
Else
n = n + 1
' 将关键字存入字典内
d.Add aa, pfs
End If
End If
Next
' 获取最后一行
HS1 = Sheets("分类汇总").Cells(Rows.Count, 4).End(xlUp).Row + 1
' 将字典粘贴到工作表
aa = d.Keys
For k = 0 To d.Count - 1
SZ = Split(aa(k), "-")
Sheets("分类汇总").Range("A" & k + 1) = SZ(0)
Sheets("分类汇总").Range("B" & k + 1) = SZ(1)
Next
Sheets("分类汇总").[C1].Resize(d.Count, 1) = Application.Transpose(d.items)
End Sub
4、第四步,在按钮中右键,选择-指定宏,并在弹出的对话框选择-分类汇总,最后点击确定。


5、最后大功告成。 想了解到其他的更好的的实例如自动将单元格内容生成图片,制作加载宏让你的程序方便快速在任意电脑使用。