Excel 效能:效能與限制改善

適用於:Excel | Excel M365 | Excel 2016 | Excel 2013 | Excel 2010 | Office 2016 | SharePoint Server 2010 | VBA

Excel M365 推出的新功能,可供您用來改善使用大型或複雜 Excel 活頁簿時的效能

SUMIFS、AVERAGEIFS、COUNTIFS、MAXIFS、MINIFS 的增強功能

在 Office 365 版本 2005 每月通道和更新版本中,Excel 的 SUMIFS、AVERAGEIFS、COUNTIFS、MAXIFS 和 MINIFS,以及其單數對應項 SUMIF、AVERAGEIF 和 COUNTIF 於彙總試算表中的字串資料方面,相較於 Excel 2010 來得更快速。 這些函數現在會為要在每個運算式中搜尋的範圍建立內部快取索引。 這個快取的索引會在從相同範圍提取的任何後續彙總中重複使用。

效果很顯著:例如,在採用 4 核心 2 GHz 的 CPU 上,從 100 萬個儲存格彙總的資料,計算 1200 個 SUMIFS、AVERAGEIFS 和 COUNTIFS 公式時,使用 Excel 2010 來計算約需 20 秒的時間,現在在 Excel M365 2006 上只需 8 秒的時間。

RealTimeData 函數(RTD)

在 Excel M365 2002 版每月通道或更新版本中,Excel 的 RealTimeData (RTD) 函 式比 Excel 2010 計算電子表格中的數據快很多。 我們在其基礎記憶體和資料結構中移除瓶頸,並使其成為執行緒安全的,讓它可在 多執行緒重新計算(MTR)的所有可用執行緒上計算。

例如類比 125,000 RTD 更新,例如「最後價格」、「詢問」、「投標」來計算「貿易量」、「市值」、「交易收益/損失」等值,以計算 500,0000 個儲存格而言,在同一部硬體上使用 2010 Excel 需花費 47 秒,而使用 Excel M365 版本 2002 則只需花費 7 秒的時間。

讓 RTD 函數成為執行緒安全的另一個正則結果是,多執行緒重新計算(MTR) 不需要暫停就能再執行 RTD 函數。 這會在執行 RTD 和許多其他計算時明顯提高效能。

例如,我們執行的活頁簿包含 10000 RTD 和 10000 VLOOKUP 函數,其中每個 VLOOKUP 都視 RTD 函數結果而定。 若沒有安全線程的 RTD 完整重新計算,則需要 10.20 秒的時間,而使用安全線程的 RTD 則需要 5.84 秒。

VLOOKUP、HLOOKUP、MATCH 改善

在 Office 365 1809 版及更新版本中,Excel 針對未排序的資料進行完全符合的 VLOOKUP、HLOOKUP 和 MATCH,在查詢相同資料表範圍中的多個資料行 (使用 HLOOKUP 時為資料列) 時較以往的速度更快。

這些查詢函數現在會為要搜尋的資料行範圍建立內部快取索引。 此快取索引會在從相同資料列 (VLOOKUP 和 MATCH) 或資料欄 (HLOOKUP) 提取的任何後續查詢中重複使用。 效果很明顯:對相同資料表範圍中 5 個不同資料行的查詢可能較使用 Excel 2010 或 Excel 2016 的相同查詢最高快 4 倍,而查詢愈多資料欄時改善愈大大。

例如,使用 Excel 2010 來計算這 5 個 VLOOKUP 公式的 100 個資料列耗費了 37 秒來計算,而使用 Excel 2016 則只需要 12 秒。

    =VLOOKUP($A900000,$A$2:$E$1000000,1,FALSE)
    =VLOOKUP($A900000,$A$2:$E$1000000,2,FALSE)
    =VLOOKUP($A900000,$A$2:$E$1000000,3,FALSE)
    =VLOOKUP($A900000,$A$2:$E$1000000,4,FALSE)
    =VLOOKUP($A900000,$A$2:$E$1000000,5,FALSE)

32 位元 Excel 的 LAA 記憶體改善

雖然 64 位元版本 Excel 中有大量記憶體的限制,32 位元版本則只有 2 GB 的虛擬記憶體。 有些客戶使用 32 位元版本,因為某些協力廠商增益集和控制項都無法在 64 位元版本中執行。

32 位元版本的 Excel 2013 和 Excel 2016 現在已啟用大量位址提示 (LAA)。 這會減少記憶體不足的錯誤訊息。

LAA 可在 Windows 64 位元版本上將可用虛擬記憶體的數量從 2 GB 加倍至 4 GB,並在 Windows 32 位元版本上將可用虛擬記憶體的數量從 2 GB 增加至 3 GB。

如需詳細資訊,請參閱 Excel 的大量位址提示功能變更

若要下載可顯示可用與已使用虛擬記憶體數量的工具,請參閱 Excel 記憶體檢查工具

整欄參考

在舊版 Excel 中,使用大量整欄參考和多個工作表的活頁簿 (例如 =COUNTIF(Sheet2!A:A,Sheet3!A1)),在開啟或在刪除資料列時,可能會使用大量記憶體和 CPU。

Excel 2016 組建 16.0.8212.1000 能減少在這些情況下使用的記憶體和 CPU。

在具有 6 百萬個公式的活頁簿的測試範例中,使用整欄參考失敗,出現記憶體不足訊息,在 Excel 2013 LAA 與 Excel 2010 使用了 4 GB 的虛擬記憶體,但在 Excel 2016 僅使用了 2 GB 的虛擬記憶體

結構化參考

在 Excel 2013 和較舊版本中,編輯活頁簿中的公式使用資料表結構化參考的資料表時很慢。 這會讓您覺得不應對具有大量資料列的表格使用資料表。 在 Excel 2016 中不會再發生此問題。

比方說,在 Excel 2013 與 Excel 2010 中耗費 1.9 秒的編輯作業,在 Excel 2016 大約為需要 2 毫秒的時間。

篩選、排序和複製/貼上

我們對在大型活頁簿中進行篩選、排序及複製/貼上的回應時間做了許多改善。

在 Excel 2013 中,篩選、排序或複製/貼上多個資料列後,Excel 可能回應會變慢,或是當機。 效能取決於介於上方可見列與下方可見列之間的所有資料列計數而定。 在我們於組建 16.0.8431.2058 中改善了垂直使用者介面位置的內部計算之後,這些作業會快很多。

開啟具有多個篩選或隱藏資料列、合併的儲存格或外框的活頁簿時,可能造成高度的 CPU 負載。 我們在組建 16.0.8229.1000 中推出這方面的修正。

從具有已篩選資料列的資料表貼上複製的儲存格資料行之後,導致大量的個別區塊資料列,回應時間很緩慢。 這已於組建 16.0.8327.1000 中改善。

從 44,000 個資料列篩選的 22,000 個資料列複製/貼上的測試範例可顯示大幅的改善:

  • 針對資料表,在 Excel 2013 中的時間耗費 39 秒、在 Excel 2010 中為 18 秒,到 Excel 2016 中為 2 秒。
  • 針對範圍,在 Excel 2013 中的時間耗費 30 秒、在 Excel 2010 中為 13 秒,到 Excel 2016 中則為一瞬間。

複製條件化格式

在 Excel 2013 中,複製/貼上包含條件化格式的儲存格可能會很慢。 這在 Excel 2016 組建 16.0.8229.0 中已大幅改善。

複製具有總計 386,000 個條件化格式規則的 44,000 個儲存格的測試範例,可顯示實質上的改善:

  • Excel 2010:70 秒
  • Excel 2013:68 秒
  • Excel 2016:7 秒

新增及刪除工作表

新增及刪除大量工作表時,Excel 2016 組建 16.0.8431.2058 的測試範例相較於 Excel 2013 會顯示 15% 到 20% 的速度改善,但較 Excel 2010 則低 5% - 10% 的速度。

新函數

Excel 2016 組建 16.0.7920.1000 推出幾個實用的工作表函數:

  • MAXIFSMINIFS 延伸 COUNTIFS/SUMIFS 系列函數。 這些函數具有良好的效能特性。 使用它們來取代同等的陣列公式。
  • TEXTJOINCONCAT 可讓您輕鬆地結合儲存格範圍中的文字字串。 使用它們來取代同等的 VBA UDF。

Windows 版 Excel 2016 的其他更新

如需有關 Excel 2016 按月付費之改善的詳細資訊,請參閱 Windows 版 Excel 2016 的新增功能

Excel 2010 效能改善

根據使用者對 Excel 2007 的意見回應,Excel 2010 推出對數項功能的改善。

功能 改善
印表機和版面配置檢視
為了改善整頁模式檢視中基本使用者互動 (例如輸入資料、使用公式或設定邊界) 的效能,Excel 2010 會快取印表機設定,並推出最佳化的呈現計算。 快取印表機設定可減少網路呼叫數目,並減少緩慢或未回應印表機的相依性。 此外,對印表機的連線也可取消,讓使用者不需要等待緩慢或未回應的印表機。
圖表
從 Excel 2010 開始,已增加圖表呈現的速度,特別是具有大型資料集的圖表,並且改善文字呈現的效能。 此外,Excel 2010 會快取圖表的影像,並且在可能時使用快取的版本,以避免不必要的計算和呈現。
VBA 解決方案
與 Excel 2007 相較,在 Excel 2010 中執行時,對物件模型與其與 Excel 互動方式的改善,增加了許多 VBA 解決方案的效能速度。

大型資料集和 64 位元版本的 Excel

64 位版本的 Excel 2010 不限於 2 GB 的 RAM,例如 32 位版本的應用程式,也不會限制為 4 GB 的 RAM,例如大型位址感知 32 位版本應用程式。 因此,64 位元版本 Excel 2010 可讓使用者建立更大型的活頁簿。 64 位元版本 Windows 可啟用較大的可定址記憶體容量,並且 Excel 的設計可利用該容量。 例如,使用者可較舊版 Excel 在格線中填入更多資料。 由於電腦新增更多的 RAM,Excel 會使用該額外的記憶體,因此隨著可用的 RAM 數量,可允許愈來愈大的活頁簿和規模。

此外,因為 64 位元版本的 Excel 可讓您使用較大的資料集,所以 32 位元和 64 位元版本的 Excel 2010 均推出對一般大型資料集工作的改善,例如輸入和向下填滿資料、排序、篩選,以及複製及貼上資料。 記憶體使用量也已最佳化,以在 32 位元和 64 位元版本 Excel 中變得更有效率。

如需 64 位元版本 Office 2010 的詳細資訊,請參閱 32 位元和 64 位元版本 Office 2010 之間的相容性,而針對 64 位元和 32 位元之間的選擇,請參閱選擇 64 位元或 32 位元版的 Office

圖案

Excel 2010 對 Excel 中圖形的效能推出大幅改善。 就高層級來說,這些改善可分為兩個方面:延展性和呈現。

延展性改善對於工作表中包含數量龐大圖形的 Excel 案例有很大的影響。 這個數量龐大的圖案通常是因為從網站複製並貼上資料,或是經常執行會建立圖案但不會移除圖案的自動化而不小心產生。 這個數量龐大的圖案,結合圖形與 Excel 中資料格關聯的方式,代表的是數個獨特的效能挑戰。 Excel 2010 中的改善可增加包含多個圖形的工作表的效能速度。

此外,從 Excel 2010 開始,對硬體加速的支援可改善呈現。 Excel 2010 也推出對 VBA 物件模型中 Shape 物件的 Select 方法的效能改善。

功能 改善
基本使用
對 Excel 2010 中所做的第一組改善是有關基本的使用案例。 這些案例包括作業和功能,例如排序、篩選、插入或調整資料列或資料欄的大小,或合併儲存格。 在發生這些作業時,您可能需要更新格線上的圖形物件的位置。 在最差的情況下,必須對工作表上的每個單一物件進行更新。 在 Excel 2010 中,即使工作表上有數千個物件,也可以改善這些基本案例的效能。 這些改善並非使用單一功能或修正而達成,而是透過專注於效能來達成,其中包括改善圖案的查詢機制、測試壓力檔案,以及調查阻礙。
文字連結
當使用者指定可為指定圖案定義文字時的公式 (例如 "= A1") 時,即會在圖形上建立文字連結。 這些特定圖形容易在具有大量物件的試算表上和/或在變更儲存格內容時造成效能問題。 從 Excel 2010 開始,Excel 追蹤及更新這些圖形的方式已經過改良,以將變更儲存格內容的效能最佳化。 這可改善案例,例如在儲存格中輸入新值,或是執行複雜的物件模型作業。
大型格線
從 Excel 2007 開始,格線的大小從 65,000 個資料列擴展到超過一百萬個資料列。 此增加會造成在較大格線的新區域中使用圖形物件時的一些效能和呈現問題。 從 Excel 2010 開始,Excel 將仰賴於使用格線左上方做為起點的功能最佳化,以改善在格線的新區域中使用圖形的使用體驗。 已改善有關 Excel 2007 的呈現逼真度與效能。
呈現:硬體加速
從 Excel 2010 開始,透過新增呈現 3D 物件時對硬體加速的支援,對圖形平台進行改善。 雖然 GPU 呈現這些物件的速度比 CPU 快,在 Excel 2010 中的體驗取決於您的工作表上的內容。 如果您有完整的 3D 圖形工作表,相較於僅具有 2D 圖形的工作表 (其不能使用 GPU),您會發現硬體加速改善有更多的優勢。

計算改善

從 Excel 2007 開始,多執行緒計算已改善計算效能。

從 Excel 2010 開始,已進行額外的效能改善,以便進一步增加計算速度。 Excel 2010 可透過非同步方式呼叫使用者定義的函數。 非同步呼叫函數藉由允許一次執行多個計算來改善效能。 在計算叢集上執行使用者定義的函數時,非同步呼叫函數允許使用數部電腦來完成計算。 如需詳細資訊,請參閱非同步使用者定義函數

多核心處理程序

Excel 2010 挹注了更多投資來利用多核心處理器的優勢,以及增加例行工作的效能。 從 Excel 2010 開始,下列功能會使用多核心處理器:儲存檔案、開啟檔案、重新整理樞紐分析表 (適用於外部資料來源,但 OLAP 和 SharePoint 除外)、將儲存格資料表排序、將樞紐分析表排序,以及自動調整欄大小。

針對牽涉到讀取和載入或寫入資料的作業,例如開啟檔案、儲存檔案,或重新整理資料,將作業分割成兩個程序可增加執行速度。 第一個程序會取得資料,及第二個程序會將資料載入至記憶體中適當的結構,或將資料寫入檔案。 如此一來,在第一個程序開始讀取部分資料時,第二個程序即可以立即開始載入或寫入該資料,而第一個程序會繼續讀取下一個部分的資料。 在過去,第一個程序必須先完成讀取某些區段中的所有資料,第二個程序才能夠將該資料區段載入至記憶體或將資料寫入檔案。

PowerPivot

PowerPivot 是指應用程式與服務的集合,其提供端對端的方法以在 Excel 活頁簿中建立資料驅動、使用者管理的商務智慧解決方案。 PowerPivot for Excel 是資料分析工具,可直接在 Excel 中提供無法倫比的運算能力。 使用者可以利用熟悉的 Excel 功能,將來自幾乎任何來源的大量資料,以令人讚嘆的速度轉換為有意義的資訊,以在幾秒內就獲得所需的解答。

PowerPivot 也已經與 SharePoint 整合。 在 SharePoint 伺服器陣列中,PowerPivot for SharePoint 是一組伺服器端的應用程式、服務與功能的集合,其可支援商務智慧資料的小組共同作業。 SharePoint 提供用於在團隊與較大型組織之間共同作業和共用商務智慧的平台。 活頁簿作者和擁有者會發佈和管理針對他們的 SharePoint 網站開發的商務智慧。

如需PowerPivot的詳細資訊,請參閱 PowerPivot概觀

HPC Services for Excel 2010

Excel 2010 利用豐富的統計分析函數、支援建構複雜的分析,以及廣泛的擴充性,它是用於分析商務資料的工具選擇。 隨著模型變大,且活頁簿變得更複雜,產生之資訊的價值會增加。 不過,較複雜的活頁簿也需要較多時間來計算。 針對複雜的分析,使用者經常會花費數小時、數天,甚至數週來完成這類複雜的活頁簿。

一個解決方案是使用 Windows HPC Server 2008 來平行在 Windows 高效能運算 (HPC) 叢集的多個節點間相應放大 Excel 計算。 在以 Windows HPC Server 2008 為基礎的叢集中執行 Excel 2010 計算有三個方法:在叢集中執行 Excel 活頁簿、在叢集中執行 Excel 使用者定義的函數 (UDF),以及使用 Excel 做為叢集服務導向架構 (SOA) 用戶端。

如需 HPC Services for Excel 2010 的詳細資訊,請參閱使用 Windows HPC Server 2008 R2 加速 Excel 2010

總結

Excel 2016 推出的效能和限制的改善,著重於增加 Excel 有效率地處理大型且複雜活頁簿的能力。 這些改善可讓 Excel 隨著硬體擴展,隨著電腦的 CPU 和 RAM 容量擴充而改善效能。

請參閱

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應