- 帖子
- 976
- 主題
- 7
- 精華
- 0
- 積分
- 1018
- 點名
- 0
- 作業系統
- Win10
- 軟體版本
- Office 2016
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2013-4-19
- 最後登錄
- 2025-1-10
|
回復 5# john2006168
我盡力加入註解,可能有些寫得不好不詳細,請您自行研究了,謝謝。
Sub test1()
Dim Arr, xD, TT, T, T1, T2, T3, N%, i&
Set xD = CreateObject("Scripting.Dictionary")
Arr = [A1].CurrentRegion '資料放入數組
For i = 2 To UBound(Arr)
'T:E欄資料、T2:B欄、T3:C欄
T = Arr(i, 5): T2 = Arr(i, 2): T3 = Arr(i, 3)
If xD.Exists(T & "") Then '字典有無E欄資料
If N = 0 Then
N = 1: TT = xD(T & "")(0) '重複出現的第1次依規則編號(第2碼)
Else
TT = xD(T & "")(0) + T1 '重複出現的第2次以上依規則編號(第2碼)
End If
Arr(i, 1) = Arr(i, 5) & TT & "1" & "-" & T & T3 + xD(T & "")(1) '依規則編號
xD(T & "") = Array(T2, T3 + xD(T & "")(1)) 'C欄(kg)累加裝入字典
Else
Arr(i, 1) = Arr(i, 5) & "1" & "-" & T & T3 '第1次出現,依規則編號放入Arr
xD(T & "") = Array(T2, T3): N = 0: T1 = xD(T & "")(0) 'B,C欄資料放入字典,T1設為B欄第一次出現數值,N=0歸零(P-C)
End If
Next
Arr(1, 1) = "Carton"
Range("d1").Resize(UBound(Arr), 1) = Arr
End Sub |
|