龙空技术网

学习VBA,报表做到飞 第三章 字典 3.5 字典嵌套数组

云飞扬2654 1154

前言:

现时朋友们对“js嵌套数组修改”都比较关切,你们都想要了解一些“js嵌套数组修改”的相关资讯。那么小编在网络上网罗了一些对于“js嵌套数组修改””的相关资讯,希望朋友们能喜欢,小伙伴们快快来学习一下吧!

第三章 字典

3.5 字典嵌套数组

字典的条目可以是一个数值,也可以是一个数组。用数组来做字典的条目,可以极大地提升字典的使用空间,让报表处理变得更便捷。现在例举一个小程序来说明字典条目使用数组的方法。

小程序:

把左边的表格进行分类汇总,然后输出到E列,形成右边的表格。

一班

15

A

一班

70

A

一班

20

A

二班

109

B

一班

35

A

三班

183

C

二班

44

B

四班

267

D

二班

28

B

五班

276

E

二班

37

B

六班

289

F

三班

66

C

三班

18

C

三班

99

C

四班

88

D

四班

89

D

四班

90

D

五班

91

E

五班

92

E

五班

93

E

六班

94

F

六班

95

F

六班

100

F

Sub 字典嵌套数组()

Dim d As New Dictionary

arr = Range("a1").CurrentRegion

For i = 1 To UBound(arr)

If d.Exists(arr(i, 1)) Then

d(arr(i, 1)) = Array(arr(i, 1), arr(i, 2) + d(arr(i, 1))(1), arr(i, 3))

tm = d(arr(i, 1))

Else

d.Add arr(i, 1), Array(arr(i, 1), arr(i, 2), arr(i, 3))

tm = d(arr(i, 1))

End If

Next

[e1].resize(d.Count, 3) = Application.Transpose(Application.Transpose(d.Items))

End Sub

把数组作为字典的条目,会让字典的条目形成一个从0开始的嵌套数组。小程序里的tm = d(arr(i, 1))语句没有实际执行功能,仅用于在程序执行时可以更直观的看到字典条目的结构,该结构如下图所示:

这个程序最关键的一句就是d(arr(i, 1)) = Array(arr(i, 1), arr(i, 2) + d(arr(i, 1))(1), arr(i, 3)),对于已经写入字典的键值,修改它的条目第二项为arr(i, 2) + d(arr(i, 1))(1),即循环到的数值加上该键对应的已合计的数值。因为嵌套数组从0开始,所以已合计的数值为d(arr(i, 1))(1),对应上图的tm(1)。

往期精彩回顾:

学习VBA,报表做到飞 第三章 字典 3.4 去除重复项与分类汇总

学习VBA,报表做到飞 第三章 字典 3.3 字典的属性

学习VBA,报表做到飞 第三章 字典 3.2 字典的方法

我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!

标签: #js嵌套数组修改