返回列表 上一主題 發帖

[發問] 有沒有比較快的方法

[發問] 有沒有比較快的方法

我有一段巨集是判定站別給予寬放期的,但是由於有時候資料筆數龐大且電腦速度不是很快,執行起來卡卡的,所以想請教各位大師如何寫執行起來才會比較快,謝謝!
                Range("F2").Select
                Data1 = Range("a65535").End(xlUp).Row
                rec = 1
                For m = 1 To (Data1 - 1)
                 If Sheets("交期").Cells(rec, 2) = "" Then
                Exit For
                 End If
                Cells(rec + m, 6).Select
                ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""NA"","""",IF(VALUE(RC[-3])>2950,RC[-1]-TODAY(),IF(VALUE(RC[-3])>2475,RC[-1]-TODAY()-5,RC[-1]-TODAY()-10)))"
                Next m
               
                '在F欄加入剩餘天數,>2950算到當日,>2475多扣5天,其餘多扣10天
ESOD_0327.rar (28.02 KB)
Adam

為什麼不直接在F欄寫好公式就好?

TOP

回復 1# adam2010
試試看
  1. Sub Ex()
  2.     Dim Rng As Range
  3.     With ActiveSheet  '資料表是作用中的工作表
  4.         Set Rng = .Range(.[a2], .Range("a65535").End(xlUp)).Offset(, 5)  '.Offset(, 5)-> 位移5欄(F欄)
  5.     End With
  6.     Rng = "=IF(RC[-1]=""NA"","""",IF(VALUE(RC[-3])>2950,RC[-1]-TODAY(),IF(VALUE(RC[-3])>2475,RC[-1]-TODAY()-5,RC[-1]-TODAY()-10)))"
  7.     '公式 : 在F欄加入剩餘天數,(M30)>2950算到當日,(M40)>2475多扣5天,其餘(M20)多扣10天
  8.     '???? 請問  (M30)>2950 應是 (C30)>2950 才對!!!
  9.    ' Rng.Value = Rng.Value    '將範圍的值=公式
  10. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

感謝GBKEE大的協助,真是超讚的!
Sorry~忘記說明裡面的(M30)、(M40)、(M20)其實是區段別,並不是儲存格
謝謝!
Adam

TOP

        靜思自在 : 【時間成就一切】時間可以造就人格,可以成就事業,也可以儲積功德。
返回列表 上一主題