Board logo

標題: [發問] 有沒有比較快的方法 [打印本頁]

作者: adam2010    時間: 2013-3-27 23:16     標題: 有沒有比較快的方法

我有一段巨集是判定站別給予寬放期的,但是由於有時候資料筆數龐大且電腦速度不是很快,執行起來卡卡的,所以想請教各位大師如何寫執行起來才會比較快,謝謝!
                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天
[attach]14471[/attach]
作者: sasho    時間: 2013-3-27 23:27

為什麼不直接在F欄寫好公式就好?
作者: GBKEE    時間: 2013-3-28 07:29

回復 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
複製代碼

作者: adam2010    時間: 2013-3-28 22:34

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




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