工作中經常要進行資料集間的主鍵查詢,滿足字典的要求(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 怎麼編寫自定義函式?我們可以按下面的結構編寫自定義函...