返回列表 上一主題 發帖

修改程式

回復 1# fangsc
修正程式於開端就給值
  1. Sub load_data()
  2. row_index = 2       '從data的第二列開始尋找,一直找至Total為止
  3. row_search = 3      '從第三列開始找起   
  4. While Left(Sheets("data").Cells(row_index, 9).Value, 5) <> "Total"
  5. '
  6. '
複製代碼
  1. '否則
  2.         Else
  3.             '從第三列開始找起
  4.             row_search = 3                                 '***  每一次都從第三列找起  是這裡浪費時間 ****
  5.             got_it = False
  6.             '一直找到空白為止
  7.             While Sheets("Summary").Cells(row_search, 1).Value <> ""
  8.                 '將Summary的四個欄位連結起來
複製代碼

TOP

回復 3# fangsc
附檔中沒 Sheets("data") 這工作表

TOP

本帖最後由 GBKEE 於 2012-10-10 19:22 編輯

回復 5# fangsc
試試看
  1. Sub load_data()
  2.     Dim row_index As Integer,row_search As Integer, D As Object, K As Variant, T As Date
  3.     T = Time
  4.     Set d = CreateObject("SCRIPTING.DICTIONARY")         '字典物件
  5.     With Sheets("data")
  6.         row_index = 2
  7.         '從data的第二列開始尋找,一直找至Total為止
  8.         While Left(.Cells(row_index, 9).Value, 5) <> "Total"
  9.             'Prod = Sheets("data").Cells(row_index, 3).Value
  10.             If .Cells(row_index, 3) = "Electro-Dip" Or .Cells(row_index, 3) = "Electro" Then
  11.                 '將四個欄位連結起來
  12.                 data_four_column = .Cells(row_index, 2) & ",," & .Cells(row_index, 3) & ",," & .Cells(row_index, 4) & ",," & .Cells(row_index, 9)
  13.                 If d.EXISTS(data_four_column) Then   '字典物件 關鍵字 (key) 存在
  14.                     d(data_four_column) = d(data_four_column) + .Cells(row_index, 10).Value
  15.                 Else
  16.                     d(data_four_column) = .Cells(row_index, 10).Value
  17.                     ''字典物件 關鍵字(key)加入 並指定 項目 (item)
  18.                 End If
  19.             End If
  20.             row_index = row_index + 1
  21.         Wend
  22.     End With
  23.      With Sheets("Summary")
  24.         row_search = 3
  25.         If .Cells(3, 1).Value = "" Then  '如果Summary的a3儲存格是空白
  26.            For Each K In d.KEYS          '取出字典物件 關鍵字
  27.             .Cells(row_search, 1).Resize(, 4) = Split(K, ",,")
  28.             .Range(put_column & row_search) = d(K)  '取出字典物件的item(項目)
  29.             row_search = row_search + 1
  30.            Next
  31.         Else
  32.             While .Cells(row_search, 1) <> ""
  33.                 K = Join(Application.Transpose(Application.Transpose(.Cells(row_search, 1).Resize(, 4).Value)), ",,")
  34.                 If d.EXISTS(K) Then        '字典物件 關鍵字 (key) 存在
  35.                     .Range(put_column & row_search) = .Range(put_column & row_search) + d(K)
  36.                     d.Remove K             '字典物件 移除 關鍵字 (key)
  37.                 End If
  38.                 row_search = row_search + 1
  39.             Wend
  40.             If d.Count > 1 Then     '沒比對到的資料
  41.                For Each K In d.KEYS
  42.                     .Cells(row_search, 1).Resize(, 4) = Split(K, ",,")
  43.                     .Range(put_column & row_search) = d(K)
  44.                     row_search = row_search + 1
  45.                 Next
  46.             End If
  47.         End If
  48.     End With
  49.     MsgBox (Format(Time - T, "nn分SS秒") & " 已完成!")
  50. End Sub
複製代碼

TOP

        靜思自在 : 愛不是要求對方,而是要由自身的付出。
返回列表 上一主題