看板 Visual_Basic 關於我們 聯絡資訊
最近我遇到一個疑問... 如果我要筆對兩個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
MOONRAKER:大概因為cells()涉及物件的操作所以較慢。 01/25 12:00
auxmathew:你的if條件就可以在精簡了 01/25 16:57
zchien:我把上面改寫成陣列的方式..程式執行快非常非常多.. 01/26 20:02
zchien:我之前有看到別人寫一個程式..去填滿整個sheet儲存格... 01/26 20:02
zchien:用陣列大約40秒...用cells大約要900秒.. 01/26 20:03
MOONRAKER:你到底是講陣列還是矩陣… 01/26 22:38
zchien:抱歉..我要表達的應該是陣列 01/27 18:29
※ 編輯: zchien 來自: 114.40.69.95 (01/27 18:31)
fumizuki:陣列是直接記憶體存取 cells還要經過物件的屬性去存取... 01/27 19:06