使用VBA字典,进行数据分类汇总

发布时间:2023年12月20日

使用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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。