- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
本帖最後由 GBKEE 於 2012-10-10 19:22 編輯
回復 5# fangsc
試試看- Sub load_data()
- Dim row_index As Integer,row_search As Integer, D As Object, K As Variant, T As Date
- T = Time
- Set d = CreateObject("SCRIPTING.DICTIONARY") '字典物件
- With Sheets("data")
- row_index = 2
- '從data的第二列開始尋找,一直找至Total為止
- While Left(.Cells(row_index, 9).Value, 5) <> "Total"
- 'Prod = Sheets("data").Cells(row_index, 3).Value
- If .Cells(row_index, 3) = "Electro-Dip" Or .Cells(row_index, 3) = "Electro" Then
- '將四個欄位連結起來
- data_four_column = .Cells(row_index, 2) & ",," & .Cells(row_index, 3) & ",," & .Cells(row_index, 4) & ",," & .Cells(row_index, 9)
- If d.EXISTS(data_four_column) Then '字典物件 關鍵字 (key) 存在
- d(data_four_column) = d(data_four_column) + .Cells(row_index, 10).Value
- Else
- d(data_four_column) = .Cells(row_index, 10).Value
- ''字典物件 關鍵字(key)加入 並指定 項目 (item)
- End If
- End If
- row_index = row_index + 1
- Wend
- End With
- With Sheets("Summary")
- row_search = 3
- If .Cells(3, 1).Value = "" Then '如果Summary的a3儲存格是空白
- For Each K In d.KEYS '取出字典物件 關鍵字
- .Cells(row_search, 1).Resize(, 4) = Split(K, ",,")
- .Range(put_column & row_search) = d(K) '取出字典物件的item(項目)
- row_search = row_search + 1
- Next
- Else
- While .Cells(row_search, 1) <> ""
- K = Join(Application.Transpose(Application.Transpose(.Cells(row_search, 1).Resize(, 4).Value)), ",,")
- If d.EXISTS(K) Then '字典物件 關鍵字 (key) 存在
- .Range(put_column & row_search) = .Range(put_column & row_search) + d(K)
- d.Remove K '字典物件 移除 關鍵字 (key)
- End If
- row_search = row_search + 1
- Wend
- If d.Count > 1 Then '沒比對到的資料
- For Each K In d.KEYS
- .Cells(row_search, 1).Resize(, 4) = Split(K, ",,")
- .Range(put_column & row_search) = d(K)
- row_search = row_search + 1
- Next
- End If
- End If
- End With
- MsgBox (Format(Time - T, "nn分SS秒") & " 已完成!")
- End Sub
複製代碼 |
|