PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Office
[算表] VBA跑迴圈很慢如何改善
作者:
tina1688
2019-10-29 20:31:17
又來請教大大,
要將list檔案(53筆data)
彙整至兩個不同檔案(超過1300筆data,其他欄位有填滿和公式格式設定)
但一個檔案就要跑5分鐘@@,
有辦法修改讓他跑快一點嗎?
程式碼如下,附上VBA檔案&File連結,會比較清楚&可編輯
https://reurl.cc/D1j3GN
再麻煩解惑,感謝喔~
Sub MFile()
Dim X As Long
Dim i As Integer
M = "MFile"
OnLineList = "list"
'如果I欄(上線清單)=1,
Windows(OnLineList).Activate
Sheets("資料合併整理for單列").Range("A2").Select
For i = 2 To ActiveCell.SpecialCells(xlLastCell).Row
If Windows(OnLineList).ActiveSheet.Range("I" & i) = 1 Then
Windows(M).Activate
Sheets("2019").Range("I5").Select
For k = 5 To ActiveCell.SpecialCells(xlLastCell).Row
If Windows(M).ActiveSheet.Range("I" & k) = Windows(OnLineList).ActiveSheet.Range("A" & i) And _
Windows(M).ActiveSheet.Range("AJ" & k) = "" Then
Windows(M).ActiveSheet.Range("AJ" & k) = Windows(OnLineList).ActiveSheet.Range("B" & i)
Windows(M).ActiveSheet.Range("AQ" & k) = Windows(OnLineList).ActiveSheet.Range("C" & i)
Windows(M).ActiveSheet.Range("AH" & k) = Windows(OnLineList).ActiveSheet.Range("F" & i)
Windows(M).ActiveSheet.Range("AJ" & k).Interior.Color = 15773696
Windows(M).ActiveSheet.Range("AQ" & k).Interior.Color = 15773696
Windows(M).ActiveSheet.Range("AH" & k).Interior.Color = 15773696
Windows(OnLineList).ActiveSheet.Range("B" & i).Interior.Color = 15773696
Windows(OnLineList).ActiveSheet.Range("C" & i).Interior.Color = 15773696
Windows(OnLineList).ActiveSheet.Range("F" & i).Interior.Color = 15773696
Else
If Windows(M).ActiveSheet.Range("I" & k) = Windows(OnLineList).ActiveSheet.Range("A" & i) And _
Windows(M).ActiveSheet.Range("AJ" & k) <> "" Then
Windows(M).ActiveSheet.Range("AJ" & k).Interior.Color = 1111111
Windows(M).ActiveSheet.Range("AQ" & k).Interior.Color = 1111111
Windows(M).ActiveSheet.Range("AH" & k).Interior.Color = 1111111
Windows(OnLineList).ActiveSheet.Range("B" & i).Interior.Color = 1111111
Windows(OnLineList).ActiveSheet.Range("C" & i).Interior.Color = 1111111
Windows(OnLineList).ActiveSheet.Range("F" & i).Interior.Color = 1111111
End If
End If
Next
End If
Next
End Sub
作者: soyoso (我是耀宗)
2019-10-29 21:32:00
減少迴圈次數,如要判斷為1方面就可以用篩選,迴圈於被篩選的資料for k=5..next和if 條件1的判斷方面就迴圈於range.find
繼續閱讀
[算表] 人員工時的篩選
ejeanstone
[算表] 查詢功能(power-query)只會載入100筆
oppa0312
[問題] g2deal 賣Office特價中
jayzhuang
[算表] 開機會自動開啟Excel
geltukou
[文件] word合併列印-日期排序位置錯誤
quirrky
[文件]計算特定欄位標準差
ChenStar
[算表] Google試算表超連結to跨工作表儲存格
tina1688
[問題] Excel移除所有重複
s4028600
[算表] VBA合併與轉換多欄(已解決)
jerry7504
[問題] 我是正版office ~~找不到access
pippeen
Links
booklink
Contact Us: admin [ a t ] ucptt.com