返回列表 上一主題 發帖

[發問] for 巢狀迴圈 運算速度有點久請問該如何改善

[發問] for 巢狀迴圈 運算速度有點久請問該如何改善

  1. Sub 銷貨明細總數()
  2.     Dim x As Long
  3.     With 銷貨總數
  4.     For i = 5 To 64
  5.         For c = 10 To 39
  6.          x = WorksheetFunction.sumif(Sheets("銷貨明細").Range("B2:B500"), Sheets("銷貨總數").Cells(1, c) & Sheets("銷貨總數").Cells(i, 1), Sheets("銷貨明細").Range("O2:O600"))
  7.                If Sheets("銷貨總數").Cells(i, c) <> x Then
  8.                    Sheets("銷貨總數").Cells(i, c) = x
  9.                  End If
  10.             Next
  11.            Next
  12.         End With
  13.   
  14.             End Sub
複製代碼

本帖最後由 GBKEE 於 2020-4-24 06:18 編輯

回復 1# s3526369
  1. Sub Ex()
  2.     With Sheets("銷貨總數").Range(Sheets("銷貨總數").Cells(5, 10), Sheets("銷貨總數").Cells(64, 39))
  3.         '**寫入公式
  4.         .Cells = "=SumIf(銷貨明細!R2C2:R500C2,銷貨總數!R1C&銷貨總數!RC1,銷貨明細!R2C15:R600C15)"
  5.         '**寫入公式 :不顯示0
  6.        ' .Cells = "=IF(SumIf(銷貨明細!R2C2:R500C2,銷貨總數!R1C&銷貨總數!RC1,銷貨明細!R2C15:R600C15)>0,SumIf(銷貨明細!R2C2:R500C2,銷貨總數!R1C&銷貨總數!RC1,銷貨明細!R2C15:R600C15),"""")"
  7.        '**覆蓋公式掉,顯示值
  8.         '.Cells = .Value
  9.     End With
  10. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 准提部林 於 2020-4-24 10:15 編輯

1800格放sumif, 若還是會卡, 用字典及array較快~~
矇著寫~~~~
Sub TEST_01()
Dim Arr, Crr, xD, R&, C&, T$
Set xD = CreateObject("Scripting.Dictionary")
Arr = [銷貨明細!B2:O500]
For R = 1 To UBound(Arr)
    T = Arr(R, 1)
    If T <> "" Then xD(T) = xD(T) + Val(Arr(R, 14))
Next R
Arr = [銷貨總數!A1:AM64]
Crr = [銷貨總數!J5:AM64]
For R = 5 To UBound(Arr)
For C = 10 To UBound(Arr, 2)
    Crr(R - 4, C - 9) = xD(Arr(1, C) & Arr(R, 1))
Next C
Next R
[銷貨總數!J5:AM64] = Crr
End Sub

======================

TOP

        靜思自在 : 真正的愛心,是照顧好自己的這顆心。
返回列表 上一主題