[VBA ] 微巨量资料处理

楼主: Kenchun (suu)   2019-06-18 17:18:34
大家好,首发若有违反版规,还请见谅。
我目前需要以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?感觉明显不成比例,应该不会耗尽才对?
所以想请问各位前辈们,遇到这种状况如何解决,谢谢!
作者: newton41 (Newton)   2019-06-18 18:14:00
Excel的有些版本有内存限制,可能换成64bit版本会改善。
楼主: Kenchun (suu)   2019-06-18 22:36:00
您好,我自己本身已经使用Office 2019 64位元版本了QQ不知道有没有修改内部设定的方式可以解除限制
作者: MOONRAKER (㊣牛鹤鳗毛人)   2019-06-19 10:26:00
自己写个for each跑26万笔卡实在
楼主: Kenchun (suu)   2019-06-19 11:56:00
我之前是使用for loop的方式一个一个跑,但发现所需时间过久,不如我自己手动使用filter,而在这样做之后想到可以录宏,就录了,但手动并不会发生这种状况@@
作者: newton41 (Newton)   2019-06-19 14:07:00
有试着把后面copypaste的部分拿掉测试看看是不是问题出在filter上吗?如果把需要做filter的范围指定好会不会也有帮助。用loop的方式不要用copypaste而是用传值的方式效果应该会改善。
作者: Marty (DNA探针)   2019-06-21 09:44:00
SELECT => COPY => PASTE => GG

Links booklink

Contact Us: admin [ a t ] ucptt.com