- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
6#
發表於 2022-12-30 15:00
| 只看該作者
本帖最後由 Andy2483 於 2022-12-30 15:01 編輯
回復 2# Andy2483
回復自己複習心得註解
Option Explicit
Sub 陣列與字典練習_2條件下做資料整理相加_FG欄排序()
Dim Y, Z, V, Arr, i&, T(3)
'↑宣告變數:(Y,Z,V,Arr)是通用型變數,i是長整數,T是一維陣列T(0)~T(3)
Set Y = CreateObject("Scripting.Dictionary")
Set Z = CreateObject("Scripting.Dictionary")
Set V = CreateObject("Scripting.Dictionary")
'↑令Y,Z,V各是字典
Arr = Range([C2], [A65536].End(3))
'↑令Arr是二維陣列!以[C2]到A欄最後有內容儲存格,這範圍儲存格值倒入
For i = 1 To UBound(Arr)
'↑設順迴圈!i從1到Arr陣列最列大索引號數
T(1) = DateValue(Arr(i, 1))
'↑令1索引號T陣列值是 i迴圈列1欄Arr陣列值轉日期格式
T(2) = Arr(i, 2)
'↑令2索引號T陣列值是 i迴圈列2欄Arr陣列值
T(3) = Arr(i, 3)
'↑令3索引號T陣列值是 i迴圈列3欄Arr陣列值
T(0) = T(1) & "|" & T(2)
'↑令0索引號T陣列值是 1索引號T陣列值連接 "|" 再連接2索引號T陣列值
Y(T(0)) = Y(T(0)) + T(3)
'↑令以0索引號T陣列值為Key,item是自身+3索引號T陣列值,倒入Y字典
Z(T(0)) = T(1)
'↑令以0索引號T陣列值為Key,1索引號T陣列值,倒入Z字典
V(T(0)) = T(2)
'↑令以0索引號T陣列值為Key,2索引號T陣列值,倒入V字典
Next
[F:H].ClearContents
'↑清除F:H欄儲存格內容
[F2].Resize(Z.Count, 1) = Application.Transpose(Z.ItemS)
'↑令[F2]擴展向下Z字典數 向右不擴展範圍儲存格以Z字典的item轉置後倒入
[G2].Resize(V.Count, 1) = Application.Transpose(V.ItemS)
'↑類推
[H2].Resize(Y.Count, 1) = Application.Transpose(Y.ItemS)
'↑類推
With [F2].Resize(Z.Count, 3)
'↑以下是 關於[F2]擴展向下Z字典數 向右3欄範圍儲存格
.Sort _
KEY1:=.Item(1), Order1:=xlAscending, _
KEY2:=.Item(2), Order2:=xlAscending, _
Header:=xlNo, Orientation:=xlTopToBottom
'↑令以儲存格集第1欄做第一層做無標題列的上下順排序,第2欄同時做第二層上下順排序
End With
[F1:H1] = [{"日期","產品","數量"}]
'↑令F1到H1之間的儲存格以字串帶入
Set Y = Nothing
Set Z = Nothing
Set V = Nothing
Set Arr = Nothing
Erase T
'↑釋放變數
End Sub |
|