2017-02-23 29 views
0

我在一個Excel文件中有一個VBA宏(我們稱之爲AAA),它通過一個工作表的行循環查找存儲在單獨Excel文件(我們稱之爲BBB)中的附加數據。 爲了查找數據,我需要過濾,分類和搜索BBB中的數據。 一切工作正常,我的問題是,如果不是在BBB中執行所有操作,我是否會在計算時間(即速度)方面獲得任何優勢?我首先將值複製粘貼到AAA(並關閉BBB)的額外工作表中? 重要的是BBB只包含普通值,沒有公式(所以在每次迭代時都沒有重新計算大量數據的風險)。複製本地工作表中的數據是否更高效?

+5

很難說沒有看到代碼。如果一切正常,您可能需要在[Code Review](http://codereview.stackexchange.com/)上發佈代碼。請注意,問題指南存在不同之處,請先閱讀[如何提問](http://codereview.stackexchange.com/help/how-to-ask)頁面。 – Comintern

回答

0

直接回答你的問題;沒有,很少提供您聲明一個變量爲BBB:

Dim wbBBB as workbook 
Set wbBBB = etc etc 

編譯器使用指針BBB花費微乎其微,可以隨意引用其他工作簿,而不將數據移動到原來的工作簿。只是要小心避免選擇語句等,直接引用數據,而不是從ActiveCell。

要擴大您的問題;從工作表中閱讀和寫作是非常昂貴的,只有少數例外。一個例外是將範圍的內容存儲到數組中是非常快的。所以我建議將AAA讀入數組,將BBB讀入數組。例如,假設兩張表的數據都在範圍A1到D500中:

Dim aaa() as Variant, bbb() as Variant 

aaa = sheets("myAaaSheet1").Range("A1:D500").Value 
bbb = sheets("myBbbSheet1").Range("A1:D500").Value 

然後,不使用工作表處理數組。有很多方法可以處理超出此問題範圍的數組,但您可以在線查找大量信息,例如cpearson.com/excel/ArraysAndRanges

相關問題