Excel VBA 字典入門key和item

昨天的一篇文章,採用了字典的做法。今天開篇講一下字典的最重要的兩個參數key和item。

什麼是字典?

VBA中有個Dictionary對象,用於存儲數據關鍵字(Key)和條目(item)對,管著個對象叫做字典

字典存儲數據有兩個特點:

一是條目(item)與關鍵字(key)配對存在。(即一一對應)

二是關鍵字(Key)唯一。(即key沒有不能有重複值)

字典的運用主要是基於以上的兩點。特別是key的唯一性。

字典如何使用

由於字典不是VBA本生的用法,所以使用字典的話,需要引用。常規有兩種方法引用字典。一種是前期綁定,一種是後期綁定。前期綁定,用的比較少,篇幅所限就不展開講了。就講一下後期綁定。

sub 後期綁定()

Dim dic

Set dic= CreateObject("Scripting.Dictionary")

End Sub

只要用一個set +上字典的名字 =CreateObject("Scripting.Dictionary")就綁定了字典。

字典的key及item的理解

本篇結合數組詳解一下key及item

先看一列,同樣複製A1:B8區域的數據,分別用數組與字典的寫法。

Excel VBA 字典入門key和item

上述示例中,D,E列的寫入是用的數組,H,I列的寫入用的是字典。

代碼的示例如下:

Sub 字典入門()

Application.ScreenUpdating = False

Dim arr, dic, nRow

Set dic = CreateObject("Scripting.Dictionary")

'把A1到B8的區域的數字,裝入數組

arr = Range("a1").CurrentRegion

'把A列的數組裝入字典的key

'把B列的數據裝入字典的item

nRow = Range("a" & Rows.Count).End(3).Row

For i = 1 To nRow

dic(Cells(i, 1)) = Cells(i, 2)

Next i

'把數組寫到D E列

Range("d1").Resize(UBound(arr), UBound(arr, 2)) = arr

'把字典的key與item分別寫到H I列

Range("h1").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(dic.keys)

Range("I1").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(dic.items)

Application.ScreenUpdating = True

End Sub

可以看到。把數據放入數組及從數組裡面提出數據,都很方便。

但是把數據裝入字典,就不得不借助於For 循環。下面用圖例講解本代碼:

Excel VBA 字典入門key和item

Excel VBA 字典入門key和item

無論什麼情況下keys與items都只能是一維的數組,如果你按照表格的思維來理解的話,那麼dic就只有兩列數據一列為key另外與之對應的為items。

Excel VBA 字典入門key和item

注:如圖所示的三列數據,B列數據不能作為key因為用重複值。只有A、C列可以作為key。

那麼對於三列以上的數據會用到字典嵌套數組了。無論是key還是item都可以嵌套數組。關於字典的去重及套用數組的用法,在後面再講。


分享到:


相關文章: