管理表や請求台帳のExcelファイルを開くのに数十秒、セルを1つ打つたびに固まる——そんな状態になっていませんか。先に結論をお伝えすると、エクセルが重い原因は「ファイルサイズ」「使用範囲(セル数)」「再計算」の3つに切り分けられ、いずれも数字で測れます。測らずに対処法を片っ端から試すのが、いちばん時間を失います。
測る目安を先に出します。①ファイルサイズ=データ行数に対して不自然に大きくないか(実務では数千行の管理表で5MB超なら中身を疑う)/②使用範囲=Ctrl+Endで飛んだ最終セルから「行数×列数」を概算し、実データの10倍以上なら膨張/③再計算=F9を押して戻るまでが1秒を超えたら計算側が犯人。この「1秒」はこちらの体感ではなく公式の目安で、Microsoft「計算パフォーマンスの強化」は0.1秒未満なら一瞬と感じ、0.1〜1秒なら遅れを意識し、1〜10秒になると「データを入力するときに手動計算に切り替える必要がある」、10秒超では「ユーザーは待ちきれない」と書いています。
なぜ測る価値があるのか。Excelのワークシートは1枚あたり1,048,576行×16,384列あり(Microsoft「Excel の仕様と制限」)、「$D:$M」のような全列参照を1本書くだけで10,485,760セルを計算対象に含めてしまうためです。見た目のデータ量と、Excelが実際に抱えている量は簡単に3桁ずれます。この記事では、その「ずれ」を測る手順から、症状別の対処、やってはいけない手当て、軽量化では直らないケースの見極め方までを順に整理します。
なお本記事はローカルのExcelブック(.xlsx / .xlsm / .xlsb)が重いケースを扱います。ブラウザで開くクラウド側が遅い場合は原因が別物なので、Googleスプレッドシートが重い・開かない原因と軽くする対処法を先にご覧ください。
重い3大要因の定義と、それぞれの測り方
「重い」は主観ですが、原因の3つはいずれも客観的な数字に落とせます。まず定義を揃えます。
- ファイルサイズ(読み込みの重さ):開く・保存するときに転送し展開する量。余分な書式・スタイル・図形・画像・ピボットのキャッシュが増えると、データ行数とは無関係に膨らみます。測る数字はMB。
- 使用範囲=セル数(抱えている重さ):Excelが「使われている」と認識している矩形領域(UsedRange)。Microsoft「パフォーマンスの障害を最適化するためのヒント」はExcelが「使用されたワークシート上の領域に関する情報のみを格納しようとします」と説明しています。ここが実データより極端に広いと、開く時間とファイルサイズの両方を押し上げます。測る数字は行数×列数。
- 再計算(計算の重さ):数式を評価し直すのにかかる時間。前掲の計算パフォーマンス文書は「計算時間が長くなる要因は、数式の数やブックのサイズではありません。関係するのは、セル参照と計算操作の数、および使用されている関数の効率性です」と明言しています。測る数字は秒。
この3つは独立しています。ファイルサイズが小さくても再計算が10秒かかるブックはあり、計算がゼロでも使用範囲が100万行まで膨れていれば開くのに数十秒かかります。だから1つずつ測ります。
重さを数字で測る5つの手順
いずれも数分で終わり、ブックを壊しません。着手前にファイルのコピーを1つ取ってください。前掲のMicrosoftドキュメントも、使用範囲を削る操作の前に「最初にバックアップ コピーを作成します」と案内しています。
手順1:ファイルサイズを測る(何MBから疑うか)
エクスプローラーでファイルを右クリックし、プロパティでサイズを確認します。見るのは絶対値ではなく、データ量との釣り合いです。
Microsoftは「何MBを超えたら危ない」という基準を公式に示していません。以下はMihataが実務で使っている目安です。画像を貼っていない数千行・十数列の管理表なら1MB前後に収まるのが普通で、5MBを超えていたらセル以外のものが容量を食っていると考えてほぼ外れません。10MB、20MBならほぼ確実に余分な書式か図形です。逆に数十万行の明細データで10MBは自然なサイズで、この場合に軽量化で削れる余地は小さくなります。
あわせて拡張子を見ます。.xls のままなら、ここが最初の対処点です。前掲の「パフォーマンスの障害を最適化するためのヒント」は、XLS形式は「列数は 256、行数は 65,536 に制限されています」とし、「セルの計算順序について Excel が行うマルチスレッド最適化は XLS 形式では保存されません」と書いています。開き直すたびに計算が遅くなる形式を使い続ける理由はありません。
手順2:使用範囲のセル数を概算する(Ctrl+End)
シートを開いてCtrl+Endを押すと、Excelが認識している最終セルへ飛びます。ここで名前ボックスに表示されたセル番地から、行数×列数を概算します。
- 各シートでCtrl+Endを押し、飛んだ先のセル番地を書き出す(例:XFD1048576)。
- 行数×列数でセル数を概算する(XFD1048576なら 16,384×1,048,576=約172億セル)。
- 実データの行数×列数と比べる(例:200行×8列=1,600セル)。
- 比が10倍以上なら使用範囲の膨張と判定する。上の例なら桁が違います。
公式も同じ手順を案内しています。「Ctrl + End キーを使用して、ワークシートに表示される使用範囲をチェックできます。これが過剰な場合は、下のすべての行と列を削除し、最後に使用した実際のセルの右側に移動し、ブックを保存することを検討する必要があります」。さらに「使用範囲のサイズが大きすぎると(中略)開くのに時間がかかったり、ファイル サイズが増加したりすることがあります」とも書かれています。
⚠ 削除には注意が1つ。公式の但し書きどおり「このときに削除する領域が、数式に伴う範囲に含まれていたり、その範囲から参照されていたりすると、その範囲はサイズが縮小されるか、#N/A に変更されます」。消した行を参照している数式があると結果が壊れるので、削除後は集計値を1つ2つ、削除前の値と突き合わせてください。
手順3:再計算の時間を測る(F9と、1秒の線)
計算の重さは、ストップウォッチ無しでもかなり正確に測れます。
- 数式タブ→計算方法の設定→「手動」に切り替える(ファイル→オプション→数式→「計算オプション」でも同じ。Microsoft「数式の再計算、反復計算、または精度を変更する」)。
- その状態で適当なセルを編集してみる。ここで急に軽くなるなら、犯人は再計算です。
- F9を押して、ステータスバーの「計算」表示が消えるまでを数える。F9は公式の説明で「最後に計算されたとき以降に変更された数式と、その数式を参照する数式を再計算」です。
- Ctrl+Alt+F9で全計算の時間も数える。こちらは「開いているすべてのブックの数式を再計算します。最後に再計算されたかどうかは問いません」なので最悪値が測れます。
- 検証が終わったら必ず「自動」に戻す。忘れると集計が古い値のまま表示され、読み間違いの事故になります。
判定の線は冒頭の公式の目安です。F9が0.1秒未満なら問題なし、0.1〜1秒なら許容範囲、1秒超なら計算側に手を入れる段階、10秒超なら設計を見直す段階。なお再計算(F9)と全計算(Ctrl+Alt+F9)の差が極端に小さいブックは、揮発性関数が多くスマート再計算が効いていない兆候です(公式も「ブックの揮発性を、再計算時間対全計算時間の比として計算します」とこの比の見方を示しています)。「計算されない」側の切り分けはエクセルの数式が計算されない原因と5つの対処へ。
手順4:ファイル形式を確認する(.xlsx / .xlsb / .xls)
同じ中身でも、保存形式で開閉の速さとサイズが変わります。
- .xlsx(Excel 2007以降の既定):多数のXMLファイルを含む圧縮フォルダー。公式は「ファイルを開く、および保存するときの時間は XLSB ファイルよりも少し長くなります」としています。通常はこれで、社外とのやり取りも含めて標準。
- .xlsb(バイナリ形式):「XLS 形式よりもはるかにコンパクト」で、10個のブックで「2 ~ 8 までのサイズ削減係数」、平均は4。行数が多く開閉が遅い社内ブック向き。
- .xls:256列×65,536行に制限され、マルチスレッド最適化も保存されません。該当なし=.xlsx か .xlsm へ変換します。
行数の多い社内台帳なら .xlsb は試す価値があります。ただし社外に渡すファイルを .xlsb にするのは避けてください。相手が開けない、添付がブロックされるといった別の事故を呼びます。
手順5:中身の量を数える
最後に、ブックが抱えているものを数えます。図形はホーム→検索と選択→「選択ウィンドウ」で一覧になります。公式は図形を「Excel グリッド上にある任意のオブジェクト」と定義し、グラフ・コメント・SmartArt・写真・ワードアートを例示したうえで「多くの場合、ユーザーは自分が存在することを認識しない場合があります」と書いています。条件付き書式のルール数はルールの管理→「このワークシート」、名前の定義は数式→名前の管理、外部リンクはデータ→リンクの編集で数えます。あわせてCtrl+Fで「:$」「A:A」を数式検索し、全列参照があるかないかを確認してください。
測定結果 → 疑う犯人(対応表)
測った数字を、この表で突き合わせます。複数が同時に効いていることも多いので、上から1つずつ潰すのが確実です。
測った数字 | この値なら | 疑う犯人 | まず打つ手 |
|---|---|---|---|
ファイルサイズ | 数千行で5MB超(実務の目安) | 余分な書式・未使用スタイル・図形・画像 | 余分なセル書式のクリア/選択ウィンドウで図形を削除 |
Ctrl+Endのセル数 | 実データの10倍以上 | 使用範囲の膨張(列全体への書式・貼り付けの残骸) | 実データの下・右を行列ごと削除して保存(要バックアップ) |
F9の時間 | 1秒超 | 参照セル数の多い数式・揮発性関数・配列数式 | 全列参照をテーブル参照へ/揮発性関数を1セルに集約 |
F9とCtrl+Alt+F9の差 | ほぼ同じ | 揮発性関数が多くスマート再計算が効いていない | OFFSET→INDEX、INDIRECT→CHOOSE へ置換 |
手動にしても遅い | 開閉だけ遅い | 置き場所・一時ファイル・リンク・アドイン | ローカルにコピーして比較/リンクとアドインを点検 |
条件付き書式のルール数 | 同じ条件が何十件 | 行コピーによるルールの分裂 | ルールを1本に統合し、適用先を実データ範囲に絞る |
ここまで測って、心当たりが「行数そのものの多さ」や「人数ぶんにファイルが分かれていること」に寄っていた場合、この先の軽量化で稼げる余地は大きくありません。Mihataでは、使い慣れたスプレッドシートの形を残したまま入力画面と集計を分ける進め方もご案内しています(スプシ de 社内アプリ)。記事の途中で恐縮ですが、表の置き場所を変える選択肢も先に見ておくと、どこまで直すかの線を引きやすくなります。よろしければ合わせてご覧ください。
「保存が遅い」場合
入力も計算も普通なのに、Ctrl+Sを押してから戻ってこない。見るのは3点です。
1つめは保存先です。社内ファイルサーバーやNAS、同期フォルダー越しだとファイル全体を書き戻すので、サイズがそのまま待ち時間になります。デスクトップに「名前を付けて保存」して速くなれば、原因は中身ではなく経路です。共有フォルダー特有の事情は共有フォルダ上のエクセルが開くのに時間がかかる原因と対処に、OneDrive・SharePoint の同期が詰まっているときの見方はOneDriveの同期が「保留中」で止まる原因と直し方にまとめています。
2つめは「保存前の計算」です。公式は、開く・保存が遅い原因のひとつとして「場合によっては、ブックを開く、または保存するときに、ブックが再計算されることがあります。ブックの計算時間が長く、問題の原因となっている場合は、計算が手動に設定されていることを確認し、[保存前の計算]オプションをオフにすることを検討してください」と案内しています。F9が数秒かかるブックでは、保存のたびにその数秒を払っていることになります。
3つめは変更履歴の記録です。同じ文書は「共有ブックの変更履歴を記録すると、ブックのファイルサイズが急速に増加します」と書いています。古い共有ブック機能を有効にしたままのファイルは際限なく太ります。
保存のときにエラーが出る・開けなくなるところまで来ているなら、重さではなくファイルの破損を疑う段階です。見分け方と復旧手順はエクセルファイルが壊れて開けないときの修復手順へ。
「計算が遅い」場合
F9に1秒以上かかっている、入力するたびに固まる。ここは効く手が決まっています。
揮発性関数を1か所に集める
揮発性関数は「参照元が変更されていないように思われる場合でも、再計算のたびに必ず再計算されます」(計算パフォーマンスの強化)。公式が明示しているのは、RAND・NOW・TODAY が「明らかに揮発性」、OFFSET・CELL・INDIRECT・INFO が「揮発性である度合いが低い他の関数」です。あわせて「以前に揮発性関数として文書化されていたいくつかの関数、INDEX・ROWS・COLUMNS・AREAS は実際には揮発性ではありません」とも書かれているので、INDEXは安心して使えます。
具体策も公式の推奨そのままで十分です。「TODAY 関数または NOW 関数を使用する何百ものセルを含める必要はありません。スプレッドシートに現在の日付と時刻が必要な場合は、関数を 1 回使用し、リンクの定義された名前を使用して関数を参照します」。そして「OFFSET の代わりに INDEX を、INDIRECT の代わりに CHOOSE を使用します」。INDIRECTは公式のシングルスレッド関数一覧(PHONETIC、GETPIVOTDATA、HYPERLINK、VBAのユーザー定義関数などと並ぶ)にも入っており、マルチコアの恩恵を受けられません。
全列参照をテーブル参照に替える
いちばん効くのがここです。Microsoft「使用するメモリを減らすことができるように Excel ブックをクリーンアップする」は、=VLOOKUP(A1,$D:$M,2,FALSE) を例に挙げ、「Excel 2003 以前のバージョンでは、この VLOOKUP は 655,560 個のセル(10 列 x 65,536 行)のみを含む行全体を参照していました。ただし、新しい大きなグリッドでは、同じ数式で約 1,050 万個のセルが参照されます(10 列 x 1,048,576 行 = 10,485,760)」と説明しています。
これは「Office 2016/365 バージョン 1708 16.0.8431.2079 以降で修正されています」と明記されていますが、古いバージョンのExcelを使っている環境では今も効きます。同じ文書は「定義された名前を調べて、列または行全体を参照する他の数式がないことを確認します」とも注記しています。数式本体を直しても、名前の定義に全列参照が残っていれば同じことです。
置き換え先として公式が推奨するのは構造化テーブル参照で、「参照先テーブルのサイズが増減すると、自動的に拡張および縮小されます」「列全体の参照と動的範囲の代替方法よりも、パフォーマンスの欠点が少なくなります」とされています。データ範囲を選んでCtrl+Tでテーブルにし、数式をテーブル名で書き直すのが、効果と安全性の両方で最善手です。
配列数式とSUMPRODUCTを見直す
配列数式は「空白セルや使用されていないセルも含め、すべてのセル参照が強制的に計算されます。Excel 2007 以降では 100 万行まで使用できるので、全列を参照する配列数式は計算速度が著しく低下します」。公式は「可能であれば、配列数式ではなく、SUMIFS、COUNTIFS、および AVERAGEIFS 関数を常に使用する必要があります」とも書いています。
効き方の桁を示す実測も公式に載っています。11,000行のリストから一意の件数を数える処理で、配列数式では13.8秒、補助列を1本足して合計する方式では0.027秒。公式はこれを「パフォーマンス向上係数は 13.8/0.027=511」と書いています。複雑な1本の数式より、単純な数式を並べた補助列のほうが速い——これがExcelの計算の原則です。
ブックをまたぐ計算を減らす
公式は「ブック間で計算を行う数式を制限します」とし、対処として「数式を 1 つのブックに含め、ブック間で簡単なリンクを作成します」を挙げています。「可能な場合は、ブック間リンクを避けてください。それらは遅く、簡単に壊れ(中略)ません」とも書かれています。どうしても残すなら「リンク先のブックを開いてから、リンク元のブックを開いてください」。
計算方法を手動にして逃げる(一時的に)
設計を直すまでの時間稼ぎとしては有効で、公式も1〜10秒の帯で「データを入力するときに、手動計算に切り替える必要があります」と認めています。ただし常用はおすすめしません。手動モードでは再計算が必要なときステータスバーに「計算」と出ますが、これを見落として古い数字を読む事故が起きます。手動にするならF9を押す癖とセットにしてください。
「特定のシートだけ重い」場合
1枚のシートに移った瞬間だけ固まる。犯人は「表示のたびに評価されるもの」か「そのシートに溜まっているもの」です。
条件付き書式と入力規則が最有力です。公式は「条件付き書式とデータの入力規則は便利ですが、多用すると、計算速度が大きく低下する原因となります。セルが表示されている場合は、各計算で(中略)すべての条件付き書式の数式が評価されます」と書いています。再計算の対象に「揮発性関数と、表示される条件付き書式」が常に含まれるとも明記されているので、そのシートを開いている間ずっとコストを払い続けます。ホーム→条件付き書式→ルールの管理で「このワークシート」を選び、重複ルールを1本に統合し、適用先を「$A$2:$H$500」のように実データ範囲へ絞ってください。
条件付き書式はファイルサイズの側でも疑われます。クリーンアップ文書は「条件付き書式を設定すると、ファイルが大きくなる可能性があります。これは、ファイル内の条件付き書式が破損している場合に発生します」として、バックアップを取ってからルールをクリアし、別名で保存して改善するか確かめる手順を示しています。
次に図形です。「スプレッドシートに多くの図形を追加するには、多くのメモリも必要です」。選択ウィンドウで一覧にして、身に覚えのないものを消します。コントロールが多いシートも要注意で、公式は「ワークシートで使用するコントロール(チェック ボックス、ハイパーリンクなど)の数が多くなると、一時ファイルの使用数に起因して、ブックを開くのに時間がかかることがあります」と説明しています。
名前の定義とピボットも見ます。公式は「定義名を使用すると、計算時間が長くなります。他のワークシートを参照する名前を使用すると、計算プロセスはより複雑になります。また、入れ子になった名前(他の名前を参照する名前)の使用も避ける必要があります」と書いています。ピボットは計算チェーンの途中で結果を参照する使い方を避けるよう案内されているので、集計シートが重いなら、ピボットの結果を別の数式が参照していないか確認してください。
そのシートで「メモリが不足しています」「使用可能なリソースが不足しています」まで出ているなら、重さを通り越しています。切り分けはエクセルで「メモリ不足」「リソース不足」と出るときの原因と対処へ。
「開くのが遅い」場合
ダブルクリックしてから表が見えるまでが長い。ここはブックの外側に原因があることが多く、公式の候補がそのまま点検リストになります。
- ネットワーク越し:ローカルにコピーして開き、速くなるかを比べます。これだけで内外が切り分けられます。
- 保護されたビュー:Microsoft「保護ビューとは」のとおり、インターネットなど安全でない可能性のある場所から開いたファイルは読み取り専用の保護ビューで開かれます。メール添付やダウンロードしたファイルを毎回ここで待っているなら、遅いのは中身のせいではありません。
- アドイン:Microsoft「Excel not responding, hangs, freezes or stops working」は、まずセーフモード(excel /safe)で起動して症状が消えるかを見て、消えるならファイル→オプション→アドインからCOMアドインを1つずつ無効化する手順を示しています。XLStartフォルダーのブックが毎回自動で開いていないかも同じ文書の確認項目です。
- ウイルス対策ソフトとプリンタードライバー:同じ文書は、ウイルス対策ソフトのExcel統合でパフォーマンス問題が起きうるとし、Excel連携やアンチウイルスのアドインを無効化して確かめるよう案内しています。あわせて「Excel is printer-intensive」とあり、別のプリンタードライバーに切り替えて確かめる手順も載っています。既定プリンターが応答しないネットワークプリンターだと、起動のたびに待たされます。
- 一時ファイル・ブックの保護・バージョンまたぎ:公式は一時ファイルの蓄積に加え、「パスワードで保護された構造を持つブックは(中略)はるかに遅く開いて閉じます」「Excel は以前のバージョンを使用して保存されたブックを開くときに、フル計算を実行します」としています。PC入れ替え直後の1回だけ遅いなら最後のものです。
開くのが遅いどころか「応答なし」で固まってしまう場合は、症状が別物です。復旧の順番はエクセルが応答なしで固まった時の最短復旧手順と原因7系統にまとめています。
「入力のたびにカクつく」場合
1文字打つ、Enterを押す、そのたびに一瞬止まる。これは再計算か画面描画のどちらかで、切り分けは手順3で済んでいます。
手動にしてカクつきが消えたなら再計算で、前節の対処(全列参照・揮発性関数・配列数式)を効く順に当てます。消えないなら描画側で、条件付き書式・入力規則・図形・広い範囲の塗りつぶしが疑わしくなります。
もう1つ、公式が「揮発性操作」として挙げる操作は要注意です。「シートに、行、列、またはセルを挿入または削除する」「定義名を追加、変更、または削除する」「行をフィルタリングする、非表示にする、再表示する」はいずれも再計算を呼びます。フィルターを掛け直すたびに固まるブックは、計算が重いのが本質です。
マクロ付きブック(.xlsm)で、マクロの実行中だけカクつくなら話は別です。公式は実行中にApplication.ScreenUpdating・Application.Calculation(手動へ)・Application.EnableEvents・ActiveSheet.DisplayPageBreaksをオフにし、終わったら元に戻すことを勧めています。あわせて、セルを1つずつ読み書きするのではなく、範囲全体を一度に配列へ読み込む形に書き換えます。ただし現場でより深刻なのは速度より属人化です。この論点はExcelマクロの属人化リスクとアプリ移行の考え方で整理しています。
対処は「効く順・危なくない順」に当てる
打ち手には効果の大きさと「失うもの」があります。失うものがない順に並べました。上から試し、効いた時点で止めるのが安全です。
- ローカルにコピーして開き直す/計算方法を手動にして体感を比べる(失うもの:なし。手動の戻し忘れだけ注意)。経路の問題か計算の問題かが1分で分かります。
- 全列参照をテーブル参照・実データ範囲に絞る(失うもの:なし。行追加時の自動拡張はテーブル化で維持できる)。いちばん効きます。
- 揮発性関数を1セルに集約し、OFFSET→INDEX、INDIRECT→CHOOSEへ置換(失うもの:なし)。
- 配列数式を補助列へ分解する(失うもの:列が増えて表が横に伸びる)。公式の実測で511倍の例があります。
- 条件付き書式のルールを統合し、適用先を実データ範囲に絞る(失うもの:意図した色分け。先にルール一覧をスクリーンショットで残す)。
- 参照切れの名前の定義・外部リンクを削除し、不要な図形・画像を消す(失うもの:使っていると思っていなかった参照と画像の画質。削除後に #REF! が出ないか全シート確認)。
- 使用範囲を縮める(実データの下・右を行列ごと削除して保存)(失うもの:削除範囲を参照していた数式が #N/A になる。バックアップと集計値の突き合わせが必須)。
- 余分なセル書式を一括クリアする(失うもの:書式。Inquireアドインの「余分なセル書式のクリア」は元に戻せないので必ずバックアップを)。
- .xlsb で保存し直す/64bit版Excelへ移行する(失うもの:社外とのやり取りのしやすさ、他部署との環境差と古いアドインの互換性)。公式によれば32bit版は最大2GB、Large Address Aware対応のExcel 2013・2016で最大3GBまたは4GB、64bit版にはこの制限がありません。
やってはいけない手当て
よく見かけるのに、直らないか、別の問題を作るものを挙げます。
- とりあえず行を選んで削除する:実データの途中を消すと、参照していた数式が壊れます。公式も削除範囲が数式の範囲に含まれていれば「#N/A に変更されます」と明記しています。消すのは「実データの最終セルより下と右」だけです。
- 形式を .xls に落とす/手動計算にして解決したことにする:前者は256列×65,536行の制限でデータが切れ、マルチスレッド最適化も保存されません。後者は症状が見えなくなるだけで、古い値を読む事故が加わります。
- 条件付き書式を全部消す/「余分なセル書式のクリア」をいきなり本番ファイルで実行する:前者は切り分けのテストとして公式も勧めていますが別名で保存して確認するのが前提で、後者は元に戻せません。どちらもバックアップが先です。
- 人数ぶん・月ぶんにファイルを分割する:1ファイルは軽くなりますが、転記と突き合わせが増え、合計の手間は増えます。公式も、より小さいブックに分けることが常に良いとは限らないと述べています。
- 重いまま同時編集で回し続ける:Excelブックは基本的に1人が編集し、他は読み取り専用です。軽量化では解決しません(次節)。
軽量化では限界が来るケースの判断軸
ファイルを軽くしても解決しない問題があります。次の3つに当てはまるなら、重さの問題ではなく構造の問題です。判断基準として持っておくと迷いが減ります。
- 複数人が同時に触る必要がある:「◯◯さんが開いています」で待つ時間が毎日発生しているなら、軽量化では解決しません。
- 誰がいつ何を変えたかの履歴が要る:ファイル名に日付を付けた複製が並んでいる状態は、履歴が取れていない証拠です。しかも変更履歴の記録を有効にするとファイルサイズが急速に増えます。つまり履歴と軽さはExcelの中では両立しません。
- 同じ数字を2か所以上に転記している:転記が発生している時点で不一致は起こります。転記の手間より、突き合わせの手間が大きくなっていないか見てください。
逆に、担当が1人で、履歴も不要で、転記もない管理表なら、無理に作り替える必要はありません。この記事の軽量化で十分間に合います。移行を検討する場合の規模感や費用の目安は、脱エクセルの費用相場と失敗しない進め方にまとめています。
まとめ:今日やる順番
この記事の手順を1つの流れに畳みます。
- コピーを取る。これから測るのも直すのもコピーの上で行います。
- 測る(10分)。ファイルサイズ、各シートのCtrl+End、F9とCtrl+Alt+F9の時間、拡張子の4つを書き出し、対応表で犯人を1つに絞ります。
- 効く順・危なくない順に1つ当てて、また測る。一度に複数を変えると何が効いたか分からなくなります。公式も「変更を行うたびに時間の測定とテストを行う」を規則として挙げています。
- 1秒を切ったら止める。F9が0.1〜1秒に入れば日常の作業で引っかかりは感じません。そこから先を削るのは費用対効果が落ちます。
原因がどうしても特定できないときは、個別の症状から逆に辿ると早いことがあります。循環参照が消えない時の探し方(公式も循環参照の反復計算は常にシングルスレッドで低速だとしています)、数値が文字列で集計されない時の直し方、日付に勝手に変換される時の対処を確認してください。
どの原因に当たっているか判断がつかない場合や、業務システム化まで含めて相談したい場合は、実際のファイルを拝見しながら一緒に切り分けます。無理にお勧めはしませんので、お気軽にご連絡ください。
よくある質問
エクセルが重い原因の調べ方を、順番に教えてください。
4つの数字を書き出すところから始めます。ファイルサイズ(プロパティ)、各シートでCtrl+Endを押して出た最終セルから概算した行数×列数、F9とCtrl+Alt+F9を押して戻るまでの秒数、拡張子です。実データに対してセル数が10倍以上なら使用範囲の膨張、F9が1秒を超えていれば再計算が犯人と切り分けられます。
再計算が遅いときに真っ先に直すべき数式は何ですか。
A:Aや$D:$Mのような全列参照です。Microsoftは=VLOOKUP(A1,$D:$M,2,FALSE)が10列×1,048,576行=10,485,760セルを参照する例を挙げています。次に揮発性関数で、NOWとTODAYは1セルに集約し、OFFSETはINDEX、INDIRECTはCHOOSEへ置き換えます。参照範囲はテーブル化するのが公式の推奨です。
保存だけが遅い場合はどこを見ればよいですか。
保存先、保存前の再計算、変更履歴の3点です。デスクトップに名前を付けて保存して速くなれば原因は経路側です。計算が重いブックでは保存のたびに再計算が走るため、Microsoftは計算を手動にして「保存前の計算」をオフにすることを案内しています。古い共有ブックの変更履歴を有効にしたファイルは、記録が溜まってサイズが急速に増えます。
特定のシートだけ重いのはなぜですか。
条件付き書式と入力規則が最有力です。Microsoftは、セルが表示されるたびにすべての条件付き書式の数式が評価されると説明しており、そのシートを開いている間ずっとコストがかかります。ルールの管理で重複を1本に統合し、適用先を実データ範囲に絞ってください。次に疑うのは図形やコントロールの蓄積、名前の定義です。
計算方法を「手動」にしたままでも問題ありませんか。
原因の切り分け中は有効で、一時的な逃げ道にもなりますが常用はおすすめしません。手動のままだと数式の結果が古いまま表示され、集計を誤って読む危険があります。手動で運用するならF9を押す習慣とセットにし、検証が終わったら数式タブから「自動」に戻してください。