他山之石 使用VBA字典 Part1

2021-08-20 22:41:19 字數 2137 閱讀 5562

工作中經常要進行資料集間的主鍵查詢,滿足字典的要求(key列不允許有重複元素)。所以,以後可考慮使用字典來實現一些查詢需求,以獲取更快的速度。

'1 什麼是vba字典?

'字典(dictionary)是乙個儲存資料的小倉庫。共有兩列。

'第一列叫key , 不允許有重複的元素。

'第二列是item,每乙個key對應乙個item,本列允許為重複

'key item

'a 10

'b 20

'c 30

'z 10

'2 即然有陣列,為什麼還要學字典?

'原因:提速,具體表現在

'1) a列只能裝入非重複的元素,利用這個特點可以很方便的提取不重複的值

'2) 每乙個key對應乙個唯一的item,只要指點key的值,就可以馬上返回其對應的item,利用字典可以實現快速的查詢

'3 字典有什麼侷限?

'字典只有兩列,如果要處理多列的資料,還需要通過字串的組合和拆分來實現。

'字典呼叫會耗費一定時間,如果是資料量不大,字典的優勢就無法體現出來。

'4 字典在**?如何建立字典?

'字典是由scrrun.dll鏈結庫提供的,要呼叫字典有兩種方法

'第一種方法:直接建立法

'set d = createobject("scripting.dictionary")

'第二種方法:引用法

'工具-引用-瀏覽-找到scrrun.dll-確定

'1 裝入資料

sub t1()

dim d as new dictionary

dim x as integer

for x = 2 to 4

d.add cells(x, 1).value, cells(x, 2).value

next x

msgbox d.keys(0)

msgbox d.keys(1)

msgbox d.keys(2)

msgbox d.items(0)

'stop

end sub

'2 讀取資料

sub t2()

' dim d

dim d as new dictionary

dim arr

dim x as integer

' set d = createobject("scripting.dictionary")

for x = 2 to 4

d.add cells(x, 1).value, cells(x, 2).value

next x

msgbox d("李四")

msgbox d.keys(2)

arr = d.items

end sub

'3 修改資料

sub t3()

dim d as new dictionary

dim x as integer

for x = 2 to 4

d.add cells(x, 1).value, cells(x, 2).value

next x

d("李四") = 78

msgbox d("李四")

d("趙六") = 100

msgbox d("趙六")

end sub

'4 刪除資料

sub t4()

dim d as new dictionary

dim x as integer

for x = 2 to 4

d(cells(x, 1).value) = cells(x, 2).value

next x

d.remove "李四"

' msgbox d.exists("李四")

d.removeall

msgbox d.count

end sub

'區分大小寫

sub t5()

dim d as new dictionary

dim x

for x = 1 to 5

d(cells(x, 1).value) = ""

next x

stop

end sub

他山之石 使用VBA字典 Part2

這裡講的三個字典的應用,都挺新鮮的,有機會可以實踐一下。sub 提取不重複的產品 dim d as new dictionary dim arr,x arr range a2 a12 for x 1 to ubound arr d arr x,1 next x end sub sub 彙總 dim ...

他山之石 使用VBA字典 Part3

這部分算是vba字典的高階用法了,竟然可以實現透視表功能,確實很強大!sub 下棋法之多列彙總 dim 棋盤 1 to 10000,1 to 3 dim 行數 dim arr,x,k dim d as new dictionary arr range a2 c range a65536 end xl...

他山之石 VBA自定義函式

vba自定義函式自己是最近才開始使用的。其好處是可在工作表中直接呼叫,很方便。這裡,這位老師總結的很好,學習了!1 什麼是自定義函式?在vba中有vba函式,我們還可以呼叫工作表函式,我們能不能自已編寫函式呢?可以,這就是本集所講的自定義函式 2 怎麼編寫自定義函式?我們可以按下面的結構編寫自定義函...