第三章 字典 3.5 字典嵌套數(shù)組 字典的條目可以是一個(gè)數(shù)值,,也可以是一個(gè)數(shù)組,。用數(shù)組來做字典的條目,可以極大地提升字典的使用空間,,讓報(bào)表處理變得更便捷?,F(xiàn)在例舉一個(gè)小程序來說明字典條目使用數(shù)組的方法。 小程序: 把左邊的表格進(jìn)行分類匯總,,然后輸出到E列,,形成右邊的表格。
Sub 字典嵌套數(shù)組() 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 把數(shù)組作為字典的條目,,會(huì)讓字典的條目形成一個(gè)從0開始的嵌套數(shù)組,。小程序里的tm = d(arr(i, 1))語句沒有實(shí)際執(zhí)行功能,僅用于在程序執(zhí)行時(shí)可以更直觀的看到字典條目的結(jié)構(gòu),,該結(jié)構(gòu)如下圖所示: 這個(gè)程序最關(guān)鍵的一句就是d(arr(i, 1)) = Array(arr(i, 1), arr(i, 2) + d(arr(i, 1))(1), arr(i, 3)),,對于已經(jīng)寫入字典的鍵值,修改它的條目第二項(xiàng)為arr(i, 2) + d(arr(i, 1))(1),,即循環(huán)到的數(shù)值加上該鍵對應(yīng)的已合計(jì)的數(shù)值,。因?yàn)榍短讛?shù)組從0開始,所以已合計(jì)的數(shù)值為d(arr(i, 1))(1),,對應(yīng)上圖的tm(1),。 |
|