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