作者zchien (小建)
看板Visual_Basic
标题[VBA ] 比对文件用阵列和用cells..时间差很多
时间Wed Jan 25 02:21:44 2012
最近我遇到一个疑问...
如果我要笔对两个sheet页面
sheet1有两百笔资料...sheet2有1万笔资料
sheet1每一笔资料..都要和sheet2 1万笔资料去比..再把相异点汇出
但是我发现一个问题
原本我是用cells写一个回圈去比...
需要大约3~4分钟
For i = 1 To 200
For j = 1 To 10000
If Worksheets(sheet2).Cells(j, 1) = Cells(i, 1) And Cells(i, 1) <> "" Then
If Worksheets(sheet2).Cells(j, 2) <> Cells(i, 2) Then
Worksheets("不同的").Cells(k, m) = Cells(i, 1)
Worksheets("不同的").Cells(k, m + 1) = Cells(i, 2)
Worksheets("不同的").Cells(k, m + 2) = Worksheets(sheet2).Cells(j, 2)
k = k + 1
End If
End If
Next j
Next i
但是我看到一个类似的巨集...是用阵列去比较的
却只要几秒钟....
这差别是什麽呢...
就我的认知...不是都是用系统记忆体去当暂存吗???
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.175.213.140
1F:→ MOONRAKER:大概因为cells()涉及物件的操作所以较慢。 01/25 12:00
2F:→ auxmathew:你的if条件就可以在精简了 01/25 16:57
3F:→ zchien:我把上面改写成阵列的方式..程式执行快非常非常多.. 01/26 20:02
4F:→ zchien:我之前有看到别人写一个程式..去填满整个sheet储存格... 01/26 20:02
5F:→ zchien:用阵列大约40秒...用cells大约要900秒.. 01/26 20:03
6F:→ MOONRAKER:你到底是讲阵列还是矩阵… 01/26 22:38
7F:→ zchien:抱歉..我要表达的应该是阵列 01/27 18:29
※ 编辑: zchien 来自: 114.40.69.95 (01/27 18:31)
8F:→ fumizuki:阵列是直接记忆体存取 cells还要经过物件的属性去存取... 01/27 19:06