[算表] 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