- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-3-24
|
12#
發表於 2023-1-5 16:47
| 只看該作者
回復 11# 准提部林
謝謝前輩
一年多了,現在才大概看懂
執行結果:
Option Explicit
Sub test_02()
Dim i&, N&, R&, T$, T2$, C%, Cx%, Arr, Brr, xD
'↑宣告變數(i,N,R)是長整數變數,(T,T2)是字串變數,(C,Cx)是短整數變數,
'其它是通用型變數
Set xD = CreateObject("Scripting.Dictionary")
'↑令xD是 字典
Arr = Range([a1], [b65536].End(3))
'↑令Arr是二維陣列!以[A1]到B欄最後一個有內容儲存格,這範圍儲存格值帶入
ReDim Brr(1 To UBound(Arr), 1 To 200)
'↑宣告Brr陣列範圍!縱向從1到Arr陣列最大索引列號,橫向從1到200
For i = 2 To UBound(Arr)
'↑設順迴圈!i從2到 Arr陣列最大索引列號
T = Arr(i, 1)
'↑令T這字串變數是 i迴圈列1欄Arr陣列值
T2 = Arr(i, 2)
'↑令T2這字串變數是 i迴圈列2欄Arr陣列值
If T = "" Or T2 = "" Then GoTo 99
'↑如果T字串變數是 空字元 或 如果T2字串變數是 空字元,就跳到99位置繼續執行
R = xD(T)
'↑令R這長整數變數是 以T字串變數查xD字典回傳的item值 (PS:若查不到!R初始值是 0)
C = xD(T & "/c")
'↑令C這短整數變數是 以T字串變數連接"/c"的新字串,查xD字典回傳的item值
'(PS:若查不到!C初始值是 0)
If R = 0 Then
'↑如果R變數是 0 ??
N = N + 1
'↑令N這長整數變數是 自身值 +1 (PS:N初始值是 0)
R = N + 1
'↑令R變數是 N變數 +1
xD(T) = R
'↑令以T變數當key,item是 R變數,放回字典
Brr(R, 1) = Arr(i, 1)
'↑令變數列1欄Brr陣列值是 i迴圈列1欄Arr陣列值
End If
C = C + 1
'↑令C變數是 自身值 +1
xD(T & "/c") = C
'↑令以T變數連接"/c"的新字串當key,item是 C變數,放入字典
Brr(R, C + 1) = T2
'↑令R變數列(C1變數+1)欄Brr陣列值是 T2字串變數
If C > Cx Then Cx = C: Brr(1, Cx + 1) = "訂單(" & Cx & ")"
'↑如果C變數 > Cx這短整數變數,就令Cx變數是 C變數,
'1列(Cx變數+1)欄Brr陣列值是 "訂單(" 連接 Cx變數 再連接 ")" 組成的新字串
99: Next i
Brr(1, 1) = "發票號碼"
Range("g1").Resize(N + 1, Cx + 1) = Brr
'[G1]儲存格擴展向下(N變數+1)列,向右擴展(Cx變數+1)欄,這範圍儲存格值以Brr陣列值帶入
End Sub |
|