返回列表 上一主題 發帖

請問sumif 改寫成字典或是array讓執行速度變快

回復 18# Andy2483


    我有重新修改了
檔案在17樓
可以看看
謝謝

TOP

回復 20# samwang


  感謝前輩~
  是得沒錯最簡單的方法,可以用IF就好,一時沒有想到

TOP

回復 21# Andy2483


    早安~ 有找到解決得辦法了
Sub TEST_2()
Application.ScreenUpdating = False
Dim x, i, QA, QB, T, S, Srr, Arr, Ac, xR, C
Dim Trr, Brr, Crr, Rs, Rqs, Rqn, Ras, Ran, B
T = Timer
Set Srr = CreateObject("Scripting.Dictionary")
Set Trr = CreateObject("Scripting.Dictionary")
S = Split("入庫明細,全機種BOM,A需求,b需求,指圖明細,倉庫庫存", ",")
For i = 0 To UBound(S)
   Set Srr(i) = Sheets(S(i))
   Set Trr(i) = CreateObject("Scripting.Dictionary")
Next
Rs = Rows.Count
Ac = Srr(5).Cells(Rs, 1).End(3).Row
Arr = Range(Srr(5).[N4], Srr(5).Cells(Ac, 1))
C = Array(15, 18, 16, 26, 1, 8, 1, 8, 6, 12)
For i = 0 To UBound(C) Step 2
   Set Rqs = Srr(i / 2).Cells(1, C(i))
   Set Rqn = Srr(i / 2).Cells(Rs, C(i)).End(3)
   Brr = Srr(i / 2).Range(Rqs, Rqn)
   Set Ras = Srr(i / 2).Cells(1, C(i + 1))
   Set Ran = Srr(i / 2).Cells(Rqn.Row, C(i + 1))
   Crr = Srr(i / 2).Range(Ras, Ran)
   For x = 1 To UBound(Brr)
      B = Brr(x, 1)
      Trr(i / 2)(B) = Trr(i / 2)(B) + Crr(x, 1)
   Next
Next

For i = 1 To Ac - 3
   xR = Arr(i, 1)
   Arr(i, 5) = IIf(Trr(0)(xR), Trr(0)(xR), 0) '入庫合計
   Arr(i, 3) = IIf(Trr(1)(xR), Trr(1)(xR), 0) '公司總需求
   Arr(i, 10) = IIf(Trr(2)(xR), Trr(2)(xR), 0) 'A倉
   Arr(i, 9) = IIf(Trr(3)(xR), Trr(3)(xR), 0) 'B倉
   Arr(i, 13) = IIf(Trr(4)(xR), Trr(4)(xR), 0) '總出貨
   QA = Arr(i, 4) + Arr(i, 5) '倉庫庫存
   QB = Arr(i, 11) + Arr(i, 12)
   Arr(i, 8) = QA - QB - Arr(i, 10) - Arr(i, 9) - Arr(i, 13) '公司倉
   Arr(i, 7) = QA - QB - Arr(i, 13) '總數
Next i
C = Array(, 3, 5, 7, 8, 9, 10, 13)
For i = 1 To UBound(C)
   Srr(5).Cells(4, C(i)).Resize(UBound(Arr), 1) = Application.Index(Arr, , C(i))
Next
Set Arr = Nothing
Set Brr = Nothing
Set Crr = Nothing
MsgBox "共耗時:" & Timer - T & " 秒"
End Sub
想請問一下紅色這段,辦法解釋原因嗎,看不太懂

TOP

回復 24# Andy2483


    謝謝前輩,原來如此多一樣可以學習

TOP

回復 26# Andy2483


    前輩你好~
    是範例不完整,可以先忽略掉沒有關係!

TOP

回復 7# samwang


    前輩你好~請問套用程式後,倉庫庫存A.B欄的公式變成值,有解決的辦法嗎?

TOP

回復 27# Andy2483

前輩~你看看這個,我套用samwang前輩方式去整理出來!
執行速度很快,但是目前遇到的問題,就是欄位原本是公式會變成值的問題,
這可能要等samwang前輩來解!

倉庫合計TEST2.rar (633.96 KB)

TOP

回復 30# s3526369
要看模組 Module2

TOP

本帖最後由 s3526369 於 2022-9-17 00:16 編輯

回復 32# samwang

前輩你好~我倉庫庫存A.B是連結材料表的資料,我重新上傳附件!

倉庫合計TEST2.rar (626.37 KB)

TOP

回復 34# samwang


    感謝前輩 ~測試可以!

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題