2015-03-03 77 views
0

我有一套公式範圍(「E10001:E20000」),我想複製到列(「F:CZ」)總共1M個單元格。選項:Excel/VBA性能

  1. 範圍( 「E10001:E20000」)複製
    範圍( 「F10001:CZ20000」)。PasteSpecial的xlPasteAll
  2. 範圍( 「F10001:CZ20000」)。式=範圍(「E10001: E20000 「)式
  3. 範圍(」 E10001:CZ20000 「)fillRight
  4. 範圍(」 E10001:CZ20000" )選擇
    隨後按Ctrl + R在Excel

在結束時,使...成爲我用公式替換值, 範圍(「F10001:CZ20000」)。值=範圍(「F10001:CZ20000」)值

我注意到的是,選項4比其他方式快。任何人都可以解釋前3個選項中的表現處罰。請注意,我不熟悉時間函數,並使用秒鐘進行身體測量。

回答

0

簡短回答:不要在SendKeys方法中使用快捷方式!
較長的答案:快捷方式可能會導致意外的結果,在我的本地設置「^ r」會(開始)插入一個表。
隨意使用一個計時器開始時間=現在,在你的代碼的開頭和

timetaken = Now - starttime 
MsgBox (Hour(timetaken) & ":" & Minute(timetaken) & ":" & Second(timetaken)) 

雖則衡量性能。
作爲一個經驗法則,你的時間是值得的方式比系統時間更多,並通過無意發送錯誤的指令集來損壞你的數據是永不值得冒險。
您使用2×10,000個單元的操作不值得優化。

+0

雖然我一般都認爲人類的時間更多,但這是我正在構建的一個巨大的可重用解決方案的一部分。不僅僅是計算,而且即使是輸入和輸出的大小都是100colx.2Mrows。 :)只有在優化設計,算法和實現基本邏輯之後,我纔看到代碼性能。 – 2015-03-04 13:25:40