tft每日頭條

 > 生活

 > Excel函數與vba實例

Excel函數與vba實例

生活 更新时间:2024-12-20 17:49:47

昨天的一篇文章,采用了字典的做法。今天開篇講一下字典的最重要的兩個參數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實例(ExcelVBA字典入門key和item)1

上述示例中,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實例(ExcelVBA字典入門key和item)2

Excel函數與vba實例(ExcelVBA字典入門key和item)3

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

Excel函數與vba實例(ExcelVBA字典入門key和item)4

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

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

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved