2016-03-05 110 views
1

我有很多工作簿,當我保存它們時(10-30分鐘)特別慢。我知道他們很慢的原因是因爲他們有很多INDEX,MATCH公式鏈接到另一個封閉的工作簿。Excel - 保存工作簿速度很慢

該工作簿需要19秒才能打開,約10秒鐘時間重新計算日期更改(改進之前,重新計算時間約50秒)。我似乎無法加快工作簿的保存時間。

我試圖找到一種方法來替換INDEX,MATCH公式的VBA代碼,當檢測到更改時導入數據,但顯然無法從已關閉的工作簿導入數據,因此,爲我工作。

我確實把公式設置爲= INDEX(,MATCH(,,))然而,我已經改變了這個有一個MATCH列,然後很多INDEX公式,這已經將重新計算時間減少到1/5它原來是什麼,開幕時間是一半,但如果有什麼節省時間更長。

有沒有人有任何建議?

+0

如果工作簿是源的鏈接也在開啓/儲存時打開,這應該會有很大的不同。還是你說這是不切實際的?就我個人而言,我總是確保在具有這種外部鏈接的文件中工作時,任何鏈接的工作簿都是同時打開的。 –

+0

讓數據存儲工作簿打開看起來似乎沒有什麼不同,我認爲數據存儲在打開時使用的資源量正在抵消打開數據存儲所帶來的任何好處。 – megatron77

+0

你說INDEX/MATCH公式?不是我信任的陣列版本?我們在談論多少這樣的公式?工作簿中的任何易失性函數(例如OFFSET,INDIRECT,TODAY,NOW)? –

回答

0

檢查此鏈接瞭解如何運行宏時,單元格的值的變化:

https://support.microsoft.com/en-us/kb/213612

從那裏,你可以有宏打開新的工作簿,添加INDEX MATCH公式單元格在原始工作簿,複製並粘貼爲值,然後關閉其他工作簿。這樣你的文件就是所有的值而不是公式,這將顯着提高速度。

要提高宏觀性能的同時運行,將其添加到代碼的開頭:

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

然後將其添加到末尾:

Application.ScreenUpdating = True 
Application.DisplayAlerts = True 
+0

我會詳細介紹一下我所能達到的保存時間,數據存儲工作簿遠遠大於我遇到的工作簿,它只是沒有任何外部鏈接,但打開和關閉它仍需要一段時間(1分鐘打開,1分鐘保存並關閉),這應該仍然比我正在經歷的保存時間更快,但會增加我的重新計算時間,因爲每次重新計算大量數據商店將不得不被打開,目前的重新計算時間在10秒左右。 – megatron77

+0

只是一些背景知識,許多工作人員在只讀模式下使用這些電子表格,他們不必保存工作簿,但他們確實需要快速重新計算。我是唯一一個在更改完成時需要保存工作簿的人,所以我不能將保存時間換算成重新計算時間。 – megatron77

+0

我想這取決於工作簿中給單元格值改變的頻率。如果非常罕見,我的答案應該是一個不錯的選擇。如果頻繁,那麼你可能需要一個單獨的宏,你可以手動啓動。 另外,從我的理解,聽起來像數據存儲工作簿上的樞軸表可能是一個更好的選擇,而不是一噸'INDEX MATCH'公式 –