Board logo

標題: [發問] for 巢狀迴圈 運算速度有點久請問該如何改善 [打印本頁]

作者: s3526369    時間: 2020-3-8 20:07     標題: 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-23 16:21

本帖最後由 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
複製代碼

作者: 准提部林    時間: 2020-4-24 09:49

本帖最後由 准提部林 於 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

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)