[VBA ] 微巨量資料處理

看板Visual_Basic作者 (suu)時間5年前 (2019/06/18 17:18), 編輯推噓1(1013)
留言14則, 4人參與, 5年前最新討論串1/1
大家好,首發若有違反版規,還請見諒。 我目前需要以VBA處理rows=26萬,col = 70的大量資料。 因為所需資料其實只是database的九牛一毛,所以我打算利用VBA autofilter功能先篩選出我要的(約3600筆) 爬了很多文後發現用內建的filter以及複製「可見儲存格」的方式,似乎蠻可行的。 但由於需要撰寫成VBA Code,所以利用巨集方式自動生成code,如下: Worksheets(1).UsedRange.AutoFilter Field:=19, Criteria1:="<>0" Worksheets(1).UsedRange.AutoFilter Field:=66, Criteria1:=Array("condition_1", "condition_2", "condition_3"), Operator:=xlFilterValues Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy Sheets("工作表1").Select Sheets("工作表1").Cells.Select Sheets("工作表1").Paste 不知道是不是我的資料量太大了,所以跳出錯誤: 「沒有足夠的記憶體可以完成此動作」 但是我的電腦記憶體有16G?感覺明顯不成比例,應該不會耗盡才對? 所以想請問各位前輩們,遇到這種狀況如何解決,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.244.185.26 (美國) ※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1560849516.A.C1F.html

06/18 18:14, 5年前 , 1F
Excel的有些版本有記憶體限制,可能換成64bit版本會改善
06/18 18:14, 1F

06/18 18:14, 5年前 , 2F
06/18 18:14, 2F

06/18 22:36, 5年前 , 3F
您好,我自己本身已經使用Office 2019 64位元版本了QQ
06/18 22:36, 3F

06/18 22:36, 5年前 , 4F
不知道有沒有修改內部設定的方式可以解除限制
06/18 22:36, 4F

06/19 10:26, 5年前 , 5F
自己寫個for each跑26萬筆卡實在
06/19 10:26, 5F

06/19 11:56, 5年前 , 6F
我之前是使用for loop的方式一個一個跑,但發現所需時間
06/19 11:56, 6F

06/19 11:57, 5年前 , 7F
過久,不如我自己手動使用filter,而在這樣做之後想到可
06/19 11:57, 7F

06/19 11:57, 5年前 , 8F
以錄巨集,就錄了,但手動並不會發生這種狀況@@
06/19 11:57, 8F

06/19 14:07, 5年前 , 9F
有試著把後面copypaste的部分拿掉測試看看是不是問題出
06/19 14:07, 9F

06/19 14:07, 5年前 , 10F
在filter上嗎?如果把需要做filter的範圍指定好會不會也
06/19 14:07, 10F

06/19 14:07, 5年前 , 11F
有幫助。
06/19 14:07, 11F

06/19 14:08, 5年前 , 12F
用loop的方式不要用copypaste而是用傳值的方式效果應該
06/19 14:08, 12F

06/19 14:08, 5年前 , 13F
會改善。
06/19 14:08, 13F

06/21 09:44, 5年前 , 14F
SELECT => COPY => PASTE => GG
06/21 09:44, 14F
文章代碼(AID): #1T2AnimV (Visual_Basic)
文章代碼(AID): #1T2AnimV (Visual_Basic)