這部分算是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(xlup).row)
for x = 1 to ubound(arr)
if d.exists(arr(x, 1)) then
行數 = d(arr(x, 1))
棋盤(行數, 2) = 棋盤(行數, 2) + arr(x, 2)
棋盤(行數, 3) = 棋盤(行數, 3) + arr(x, 3)
else
k = k + 1
d(arr(x, 1)) = k
棋盤(k, 1) = arr(x, 1)
棋盤(k, 2) = arr(x, 2)
棋盤(k, 3) = arr(x, 3)
end if
next x
range("f2").resize(k, 3) = 棋盤
end sub
sub 下棋法之多條件多列彙總()
dim 棋盤(1 to 10000, 1 to 4)
dim 行數
dim arr, x as integer, sr as string, k as integer
dim d as new dictionary
arr = range("a2:d" & range("a65536").end(xlup).row)
for x = 1 to ubound(arr)
sr = arr(x, 1) & "-" & arr(x, 2)
if d.exists(sr) then
行數 = d(sr)
棋盤(行數, 3) = 棋盤(行數, 3) + arr(x, 3)
棋盤(行數, 4) = 棋盤(行數, 4) + arr(x, 4)
else
k = k + 1
d(sr) = k
棋盤(k, 1) = arr(x, 1)
棋盤(k, 2) = arr(x, 2)
棋盤(k, 3) = arr(x, 3)
棋盤(k, 4) = arr(x, 4)
end if
next x
range("g2").resize(k, 4) = 棋盤
end sub
sub 下棋法之資料透視表式彙總()
dim d as new dictionary
dim 棋盤(1 to 10000, 1 to 7)
dim 行數, 列數
dim arr, x, k
arr = range("a2:c" & range("a65536").end(xlup).row)
for x = 1 to ubound(arr)
列數 = (instr("1月2月3月4月5月6月", arr(x, 2)) + 1) / 2 + 1
if d.exists(arr(x, 1)) then
行數 = d(arr(x, 1))
棋盤(行數, 列數) = 棋盤(行數, 列數) + arr(x, 3)
else
k = k + 1
d(arr(x, 1)) = k
棋盤(k, 1) = arr(x, 1)
棋盤(k, 列數) = arr(x, 3)
end if
next x
range("f2").resize(k, 7) = 棋盤
end sub
他山之石 使用VBA字典 Part1
工作中經常要進行資料集間的主鍵查詢,滿足字典的要求 key列不允許有重複元素 所以,以後可考慮使用字典來實現一些查詢需求,以獲取更快的速度。1 什麼是vba字典?字典 dictionary 是乙個儲存資料的小倉庫。共有兩列。第一列叫key 不允許有重複的元素。第二列是item,每乙個key對應乙個i...
他山之石 使用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自定義函式
vba自定義函式自己是最近才開始使用的。其好處是可在工作表中直接呼叫,很方便。這裡,這位老師總結的很好,學習了!1 什麼是自定義函式?在vba中有vba函式,我們還可以呼叫工作表函式,我們能不能自已編寫函式呢?可以,這就是本集所講的自定義函式 2 怎麼編寫自定義函式?我們可以按下面的結構編寫自定義函...