[算表] excel vba 效能改善

楼主: adorama (ad)   2015-04-05 00:55:54
软件:2007
版本:excel
说明一下需要做的事情
我有两份文件 A , B
要建立一份新文件C 其中有三个sheet
B中的每一列为一笔完整资料,会根据每列其中几个cell值在A里面比对的结果
将B这一笔资料其中几个cell贴到C中其中一个sheet
因为A,B资料量并不是完全一一对应 有可能找不到
因此我先用match找到B这笔资料在A哪一笔
然后if判断其中几个cell条件 再挑出几个cell贴到C
现在资料量约60000笔情况下要跑200秒
我认为花时间的部份在
1. MATCH
2. if 检查cell值
3. B档案data贴到C
其中2跟3 试过先将A B 读到variant再用array(i,j) 读取希望可以改善
可是效能却完全没改善 让我很疑惑 还是需要199~200秒
我for跑60000次 range 都load到memory不是应该会改善很多?
另外 MATCH也尝试过用if array()判断 变得无敌慢
想请教大家这种还有办法改善吗
作者: soyoso (我是耀宗)   2015-04-05 11:55:00
可用AdvancedFilter来改善
楼主: adorama (ad)   2015-04-05 12:09:00
s大 您有遇过用array搜寻比对没改善的情况吗
作者: soyoso (我是耀宗)   2015-04-05 12:15:00
这方面要测试看是比对或是复制贴上,而导致效能不高因为这二种都有可能
楼主: adorama (ad)   2015-04-05 12:32:00
贴上的部份大约会有一万多列 11行 11万cell...200秒?
作者: soyoso (我是耀宗)   2015-04-05 12:49:00
复制上不只有只是复制值还含有储存格的资料,例如框线、格式..这就有可能是变慢的原因之一,也不能说是绝对的
作者: foolkids (翼をください)   2015-04-06 18:08:00
试着在宏执行前改为手动运算公式呢?或许是因为你的C表格有大量公式?

Links booklink

Contact Us: admin [ a t ] ucptt.com