使用VBA字典,进行数据分类汇总
2023-12-20 01:17:12
使用VBA字典,进行数据分类汇总
VBA的字典共有两列,第一列是key,不允许有重复的元素;第二列是item,也就是key对应的值,item的值是可以有重复的值的。
字典的主要操作有读和写。
写操作
d(key)=item;修改key对应的item,如
d(“A”)=-7,是把key为A的item值修改为-7。如果输入的key值在字典里没有,则会自动增加一个key。
读操作
d(key),返回key对应的item值,如d(“A”)则返回其item值6。
其他操作
d.keys----返回字典中所有的key,数组形式,行向量,下标从0开始;以下代码可以遍历key
dim arrkey
arrkey=d.keys
For i = 0 To UBound(arrkey)
MsgBox arrkey(i)
Next
d.items—返回字典中所有的items,数组形式,行向量,下标从0开始;
数据分类汇总
利用字典的key的不可重复性,可以快速进行数据的分类汇总。
上图中,按部门把销售业绩进行汇总,可使用如下VBA代码
Sub huizong()
Dim i%
Dim d As Object '定义字典变量
Dim arr '定义存放待处理数据的数组变量
Set d = CreateObject("Scripting.Dictionary") '申明1个字典变量
arr = Range("A2:C14") '把数据保存到一个2维数组中,提高处理速度
For i = 1 To UBound(arr) '遍历数组里面的“部门”并作为字典的key,并达到数据去重的效果
d(arr(i, 1)) = d(arr(i, 1)) + arr(i, 3) '利用字典key不能重复的特点,把key相同的销售业绩相加,作为该key的item
'arr(i,1)是“部门”,作为字典的key
Next
Range("E2").Resize(d.Count, 1) = WorksheetFunction.Transpose(d.keys) '去重后的部门返回到E2单元格开始的列
Range("F2").Resize(d.Count, 1) = WorksheetFunction.Transpose(d.items) '部门对应的销售额,返回到F2单元格开始的列
'Transpose是转置函数,因为d.keys、d.items是个行向量
End Sub
文章来源:https://blog.csdn.net/stuyou/article/details/135093968
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!