返回列表 上一主題 發帖

[發問] 想在原有的程式碼加入找昨日的功能

本帖最後由 stillfish00 於 2017-1-5 13:46 編輯

回復 1# starbox520
日期處理請參考
DateSerial
DateDiff
DateAdd
這幾個函數,不用自己處理得那麼麻煩
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

本帖最後由 stillfish00 於 2017-1-5 19:17 編輯

回復 4# starbox520
是的,倒不如說不這樣修的話跨年度查詢可能有bug
但改這個不會提升太多速度

速度的話,你用了很多的 select , copy 才是主因
一般解決方法有兩種
一種是暫時關閉Application.ScreenUpdating,跑完再打開
另一種是不要用copy , 改用如
ar = Range("A1:C3").value    '取代 copy
Range("F1").resize(ubound(ar),ubound(ar,2)).value = ar     '取代 paste
來複製資料到別的地方

另外像
r1.Select
Selection.FillDown
這種可以直接簡化成  r1.FillDown
反正有 Select 的地方能免則免(執行動作的邏輯不變下),會快很多
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

本帖最後由 stillfish00 於 2017-1-6 15:49 編輯

回復 6# starbox520
建議你看這篇 VBA的寫作技巧與增進效能
例如
  1.            
  2.         '在""可輸入網址
  3.         Importfilepath = ""
  4.         Set oldbook = Workbooks.Open(Importfilepath)
  5.         
  6.         Columns("A:X").Select
  7.         Selection.Copy
  8.         Windows(Src).Activate
  9.         Sheets("output").Select
  10.         
  11.         Range("A1").Select
  12.         Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  13.             :=False, Transpose:=False
複製代碼
可以改成
  1.         '在""可輸入網址
  2.         Importfilepath = ""
  3.         Set oldbook = Workbooks.Open(Importfilepath)

  4.         ar = oldbook.ActiveSheet.Columns("A:X")
  5.         ThisWorkbook.Sheets("output").Range("A1").Resize(UBound(ar), UBound(ar, 2)) = ar
複製代碼
甚至不要直接用整個"A:X" column , 而是找出實際有資料的區域
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題