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 の 単数の SUMIF、AVERAGEIF と COUNTIF と同様に SUMIFS、AVERAGEIFS、COUNTIFS、MAXIFS、MINIFS は、Excel 2010 でスプレッドシート内の文字列データを計算するよりも高速に処理できます。 今ではこれらの関数は、それぞれの検索対象の列範囲に対して内部のキャッシュ インデックスが作成されるようになりました。 このキャッシュされたインデックスは、同じ範囲から取り出している以降のすべての集計で再利用されます。

この効果は目覚ましいものです。例えば、 4 core 2 GHz CPU 上で 100 万個のセルから 1,200 の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 セルで "取引高"、"時価"、"取引利益/損失" などの値を計算すると、Excel 2010 では 47 秒かかったのに対し、同じハードウェア上で Excel M365 バージョン 2002 を使用するとわずか 7 秒で処理されました。

RTD 関数をスレッドセーフにするもう 1 つのメリットは、マルチスレッド再計算 (MTR) を一時停止して、RTD 関数を実行する必要がないことです。 これにより、他の多くの計算とともに RTD を実行するときに、パフォーマンスが著しく向上します。

たとえば、RTD 関数の結果に応じて各 VLOOKUP を使用して、10000 個の RTD 関数と 10000 個の VLOOKUP 関数を含むブックを実行しました。 スレッド セーフ RTD の完全な再計算が行われなければ 10.20 秒かかり、スレッド セーフ RTD では 5.84 秒かかりました。

VLOOKUP、HLOOKUP、MATCH の改善

Office 365 バージョン 1809 以降では、並べ替えなしのデータ上での完全一致について、同じテーブル範囲から複数の列 (または HLOOKUP を含む行) を検索するときの Excel の VLOOKUP、HLOOKUP、MATCH の速度が以前より大幅に改善されました。

これらの検索関数では、検索対象の列範囲に対して内部のキャッシュ インデックスが作成されるようになりました。 このキャッシュ インデックスは、同じ行 (VLOOKUP および MATCH) または列 (HLOOKUP) から取得されるその後の検索で再利用されます。 その効果は絶大で、同じテーブル範囲内で 5 つの異なる列で検索を行うと、Excel 2010 や Excel 2016 を使用して同じ検索を行うよりも最大 4 倍高速になり、検索する列が増えるほど、より大幅な改善になります。

たとえば、これらの 5 つの VLOOKUP 式で 100 行の計算を行うと、Excel 2010 では計算に 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 ビット版の Excel には 2 GB の仮想メモリしかありません。 一部のサード パーティ製のアドインとコントロールは 64 ビット版で利用できないため、一部のお客様は 32 ビット版を使用しています。

32 ビット版の Excel 2013 および Excel 2016 では Large Address Aware (LAA) が有効になっています。 これにより、メモリ不足のエラー メッセージが最小限に抑えられます。

LAA によって、64 ビット版 Windows では利用可能な仮想メモリが 2 GB から 4 GB に倍増し、32 ビット版 Windows では利用可能な仮想メモリが 2 GB から 3 GB に増加します。

詳細については、「Large Address Aware Capability Change for Excel」 (Excel における Large Address Aware 機能の変更) を参照してください。

利用可能な仮想メモリの容量と使用されている容量を示すツールをダウンロードするには、「Excel Memory Checking Tool」 (Excel メモリ チェック ツール) を参照してください。

全列参照

以前のバージョンの Excel では、多数の列全体に対する参照や複数のワークシートを使用しているブック (=COUNTIF(Sheet2!A:A,Sheet3!A1) など) は、開いたときや行が削除されたときに大量のメモリや CPU が使用されることがありました。

Excel 2016 ビルド 16.0.8212.1000 では、このような状況で使用されるメモリや CPU を削減します。

600 万個の数式を含むブックのサンプル テストで、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 には、いくつかの便利なワークシート関数が導入されています。

  • MAXIFS および MINIFSCOUNTIFS/SUMIFS 関数ファミリを拡張します。 これらの関数には、優れたパフォーマンス特性があります。 これらを使用して同等の配列数式を置き換えます。
  • TEXTJOINCONCAT を使用すると、セル範囲のテキスト文字列を簡単に結合できます。 これらを使用して同等の VBA UDF を置き換えます。

Excel 2016 for Windows に対するその他の更新プログラム

Excel 2016 に対する月単位の改善点に関する詳細については、「Excel 2016 for Windows の新機能」を参照してください。

Excel 2010 におけるパフォーマンスの向上

Excel 2007 に関するユーザーのフィードバックを基に、Excel 2010 ではいくつかの機能の改善が導入されています。

機能 機能強化
プリンターおよびページ レイアウト ビュー
データの入力、数式の処理、余白の設定など、ページ レイアウト ビューでの基本的なユーザー操作のパフォーマンスを向上させるため、Excel 2010 ではプリンター設定をキャッシュに入れて、レンダリング計算の最適化を導入しています。 プリンター設定をキャッシュに入れることで、ネットワーク呼び出しの回数を削減し、低速のプリンターや応答のないプリンターへの依存を軽減します。 さらに、プリンターへの接続が取り消し可能なので、ユーザーは低速のプリンターや応答のないプリンターに時間を取られずに済みます。
グラフ
Excel 2010 から、特に大きなデータ セットで、グラフのレンダリング速度が向上し、テキスト レンダリングのパフォーマンスが改善されました。 さらに、Excel 2010 では、グラフのイメージをキャッシュに入れて、可能な限りそのキャッシュ内のバージョンを使用することで、不要な計算とレンダリングを回避しています。
VBA ソリューション
オブジェクト モデル、およびオブジェクト モデルと Excel との対話方法を改善することで、Excel 2007 に比べて Excel 2010 では数多くの VBA ソリューションの実行速度が向上しています。

大きなデータ セットと 64 ビット版の Excel

Excel 2010 の 64 ビット バージョンは、32 ビット バージョン アプリケーションのような 2 GB の RAM や、Large Address Aware 32 ビット バージョン アプリケーションのような最大 4 GB の RAM に制限されません。 そのため、64 ビット版の Excel 2010 では、ユーザーはより大きなブックを作成できます。 64 ビット版の Windows では、より大きなアドレス可能メモリ容量を使用でき、Excel は、その容量を利用できるように設計されています。 たとえば、ユーザーは、これまでのバージョンの Excel よりも 1 つのグリッドに多くのデータを取り込めます。 コンピューターに追加される RAM が増大するにつれて、Excel はその増えたメモリを使用して、より大きなブックに対応し、使用可能な RAM の容量に合わせて拡張します。

さらに、64 ビット版の Excel では大きなデータ セットの使用が可能なため、32 ビット版と 64 ビット版の両方の Excel 2010 で、データを入力して下方向へのコピーする、並べ替える、フィルター処理する、データをコピーして貼り付けるなど、大きなデータ セットでの一般的な作業が改善されています。 メモリの使用も、32 ビット版と 64 ビット版の両方の Excel で効率的になるように最適化されています。

64 ビット版の Office 2010 の詳細については、「Office 2010 の 32 ビット バージョンと 64 ビット バージョン間の互換性」を参照し、64 ビット版と 32 ビット版の間の選択については、「64 ビット版または 32 ビット版の Office を選択する」を参照してください。

図形

Excel 2010 では、Excel でのグラフィックのパフォーマンスが著しく向上しています。 要約すると、拡張性とレンダリングの 2 つの領域が改善されています。

ワークシートに含まれるグラフィックの数は多いため、拡張性の改善は Excel のシナリオに大きく影響します。 Web サイトからデータをコピーして貼り付けることによって、または図形の作成は行うが削除は行わない通常実行される自動化によって、数多くの図形が誤って作成されることはよくあります。 このようなグラフィックの数の多さに、Excel でそのグラフィックをデータ グリッドに関連付ける方法が重なって、固有のパフォーマンス上の問題がいくつか発生しています。 Excel 2010 における改善により、数多くの図形を含むワークシートの処理速度が向上しています。

さらに、Excel 2010 から、ハードウェア アクセラレータのサポートによりレンダリングも改善されています。 また、Excel 2010 では、VBA オブジェクト モデルで Shape オブジェクトの Select メソッドのパフォーマンス改善も導入されています。

機能 機能強化
基本的な使用
Excel 2010 における 1 つ目の改善は、基本的な使用シナリオを中心に行われています。 これらのシナリオには、行または列の並べ替え、フィルター処理、挿入、サイズ変更、セルの結合などの操作や機能が含まれます。 これらの操作が発生すると、グリッド上でグラフィック オブジェクトの位置の更新が必要になることがあります。 最悪のケースでは、ワークシート上でオブジェクト 1 つずつに更新を加えることが必要になります。 Excel 2010 では、ワークシート上に数千個のオブジェクトがある場合でも、これらの基本的なシナリオのパフォーマンスが向上します。 これらの改善は、1 つの機能や 1 つのフィックスによってではなく、図形検索メカニズムの改善、負荷ファイルのテスト、障害物の調査など、パフォーマンスに集中的に焦点を合わせることによって実現されました。
テキスト リンク
ユーザーが所定の図形のテキストを定義する数式 ("=A1" など) を指定すると、図形上にテキスト リンクが作成されます。 これらの特定の図形は、ワークシート上のオブジェクトの数が多い場合やセル内容に変更を加えた場合にパフォーマンス上の問題を引き起こす傾向がありました。 Excel 2010 から、Excel がこれらの図形を追跡して更新する方法が改善され、セル内容を変更する場合のパフォーマンスが最適化されています。 これにより、セルへの新しい値の入力、複合オブジェクト モデル操作の実行などのシナリオが改善されています。
大きなグリッド
Excel 2007 から、グリッドのサイズが 65,000 行から 100 万行以上に拡大されました。 この増加のために、大きくなったグリッドの新しい領域でグラフィック オブジェクトを操作するときに何らかのパフォーマンス問題とレンダリング問題が発生しました。 Excel 2010 から、グリッドの新しい領域でのグラフィックの操作を改善するために、グリッドの左上を原点として使用することに依存する機能が最適化されています。 Excel 2007 に比べて、レンダリングの再現性とパフォーマンスが改善されています。
レンダリング : ハードウェア アクセラレータ
Excel 2010 から、3-D オブジェクトをレンダリングする際のハードウェア アクセラレータのサポートを追加することによってグラフィック プラットフォームが改善されています。 GPU がこれらのオブジェクトをレンダリングする速度は CPU よりも高速ですが、Excel 2010 での操作はワークシートの内容によって異なります。 シートの内容が完全に 3-D 図形の場合は、2-D 図形のみの (GPU を利用しない) ワークシートよりも、ハードウェア アクセラレータによる改善のメリットが見られます。

計算の改善

Excel 2007 から、マルチスレッド計算によって計算のパフォーマンスが向上しました。

Excel 2010 からは、計算をさらに高速化するためにパフォーマンスの改善が加えられました。 Excel 2010 では、ユーザー定義関数を非同期で呼び出すことができます。 関数の非同期呼び出しでは、複数の計算を同時に実行できるようにすることによってパフォーマンスが改善されています。 ユーザー定義関数を計算クラスターで実行する場合は、関数を非同期で呼び出すことにより、複数のコンピューターを使用して計算を実行することが実現されます。 詳細については、「非同期のユーザー定義関数」を参照してください。

マルチコア処理

Excel 2010 では、マルチコア プロセッサを利用してルーチン タスクのパフォーマンスを向上させるために、さらに機能が強化されました。 Excel 2010 から、ファイルの保存、ファイルのオープン、ピボットテーブルの更新 (OLAP および SharePoint を除く、外部データ ソースの場合)、セル テーブルの並べ替え、ピボットテーブルの並べ替え、列の自動サイズ調整の各機能がマルチコア プロセッサを使用しています。

ファイルのオープン、ファイルの保存、データの更新など、データの読み取りおよび読み込みまたは書き込みを必要とする操作では、操作を 2 つのプロセスに分割することで処理を高速化しています。 1 つ目のプロセスではデータを取得し、2 つ目のプロセスではデータをメモリ内の適切な構造に読み込むか、ファイルに書き込みます。 このように、1 つ目のプロセスがデータのある部分の読み取りを始めると、2 つ目のプロセスは直ちにそのデータの読み込みまたは書き込みを始めることができ、その一方で、1 つ目のプロセスはデータの次の部分の読み取りを始めることができます。 以前は、1 つ目のプロセスが特定のセクション内のすべてのデータの読み取りを完了するまで、2 つ目のプロセスはそのセクションのデータをメモリに読み込むまたはファイルに書き込むことができませんでした。

PowerPivot

PowerPivot は、Excel のブックに、データ駆動型の、ユーザー管理のビジネス インテリジェンス ソリューションを作成するためのエンドツーエンドのアプローチを提供するアプリケーションとサービスの集合を指します。 PowerPivot for Excel は、Excel で比類ない計算力をまさに発揮できるデータ分析ツールです。 使い慣れた Excel の機能を活用して、ユーザーは、ほぼすべてのソースからの大量のデータを驚くような速度で意味のある情報に変換し、必要とする答えを瞬時に得ることができます。

また、PowerPivot は SharePoint とも統合します。 SharePoint ファームで、PowerPivot for SharePoint は、ビジネス インテリジェンス データでのチーム共同作業をサポートするサーバー側のアプリケーション、サービス、および機能の集合です。 SharePoint は、チームはもちろん、より大きな組織全体で、ビジネス インテリジェンスの共同作業および共有を行うためのプラットフォームを提供します。 ブックの作成者および所有者は、開発したビジネス インテリジェンスを SharePoint サイトに発行して管理します。

PowerPivot の詳細については、「 PowerPivot の概要」を参照してください。

Excel 2010 の HPC サービス

幅広い統計分析機能を備え、複雑な分析の構築をサポートし、拡張性に優れた Excel 2010 は、ビジネス データの分析に最適なツールです。 モデルが拡大し、ブックが複雑になるにつれて、生成される情報の価値は高まります。 しかし、ブックが複雑になるほど、計算に要する時間も増加します。 複雑な分析では、通常、ユーザーはこのような複雑なブックを完成させるのに数時間、数日、または数週間を費やすこともあります。

解決策の 1 つは、Windows HPC Server 2008 を使用して、Excel の計算を Windows 高性能コンピューティング (HPC) クラスター内の複数のノード間で並列にスケールアウトすることです。 Excel 2010 の計算を Windows HPC Server 2008 ベースのクラスターで実行する方法は 3 つあります。Excel のブックをクラスターで実行する方法、Excel のユーザー定義関数 (UDF) をクラスターで実行する方法、および Excel をクラスターのサービス指向アーキテクチャ (SOA) クライアントとして実行する方法です。

HPC Services for Excel 2010 の詳細については、「Accelerating Excel 2010 with Windows HPC Server 2008 R2」 (Windows HPC Server 2008 R2 による Excel 2010 の高速化) を参照してください。

終わりに

Excel 2016 では、大きく複雑なブックを効率的に処理するための Excel の機能強化に重点を置いたパフォーマンスと制限の改善が導入されています。 これらの改善により、Excel はハードウェアと共に拡張され、コンピューターの CPU 容量および RAM 容量の拡大に合わせてパフォーマンスを向上させることができます。

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。