- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
2#
發表於 2019-9-8 10:28
| 只看該作者
回復 1# nelson9165
試試看- Option Explicit
- Sub EX()
- Dim d As Object, i As Long, D_S As String, AR(), E As Range
- Set d = CreateObject("scripting.dictionary") '設立物件:字典物件
- With Sheets("data") '資料工作頁
- i = 2
- Do While .Cells(i, "A") <> ""
- D_S = .Cells(i, "C") & .Cells(i, "B") & .Cells(i, "A") '字典物件的 關鍵字
- 'Exists 方法 如果在 Dictionary 物件中指定的關鍵字存在,傳回 True,若不存在,傳回 False。
- If d.Exists(D_S) Then
- AR = d(D_S) '陣列=字典物件的項目
- AR(0) = AR(0) + 1 '項目 個數的加總
- AR(1) = AR(1) + .Cells(i, "D") '項目 數字的加總
- d(D_S) = AR
- Else
- d(D_S) = Array(1, .Cells(i, "D").Value) '字典物件的項目導入陣列
- End If
- i = i + 1
- Loop
-
- End With
-
- With Sheets("工作表1")
- .Range("B9:I16") = "" '清除資料不含Code
- For Each E In .Range("A9:A16") 'Code欄的範圍
- D_S = .Range("D6") & E '日期 & Code
- If d.Exists(D_S & "A") Then
- E.Range("D1") = d(D_S & "A")(0)
- E.Range("G1") = d(D_S & "A")(1)
- End If
- If d.Exists(D_S & "B") Then
- E.Range("E1") = d(D_S & "B")(0)
- E.Range("H1") = d(D_S & "B")(1)
- End If
- E.Range("F1") = E.Range("D1") + E.Range("E1")
- E.Range("I1") = E.Range("G1") + E.Range("H1")
- Next
- End With
-
- End Sub
複製代碼 |
|