ファイルが急に重くなって、スクロールがカクカクする。セルをクリックしても反応が一拍遅れる。保存に何十秒もかかる――。「もしかしてファイルが壊れたのでは」と不安になっていませんか。
結論からお伝えします。ほとんどの場合、ファイルは壊れていません。原因は①条件付き書式のかけすぎ②配列数式・VLOOKUPの多用③コピー&ペーストによる「使用範囲」の肥大化④埋め込み画像の解像度過多、のいずれかです。この記事では「開けるけれど動作が遅い」に絞って、症状から原因を切り分け、今日中に軽くする手順をコピペ可能な形でご案内します。
※「そもそもファイルが開かない・応答なしのまま固まる」という方は、こちらの記事で原因を先に確認してください。

まずここから:症状別 早見表
あなたの症状に近いものを探してください。目次代わりに使えます。
| 症状 | 疑う原因 |
|---|---|
| セルをクリック・入力するたびに一拍遅れる | 原因1:条件付き書式のかけすぎ |
| スクロールがカクカクする・画面の描画が遅い | 原因1・原因4:条件付き書式/画像の解像度過多 |
| 数式を入れた瞬間、画面全体が固まる(再計算に時間がかかる) | 原因2・原因5:配列数式の多用/揮発性関数の連鎖 |
| 行や列を挿入・削除すると急に重くなる | 原因2:配列数式・SUMPRODUCTの多用 |
| Ctrl+Endを押すと、データがない場所までカーソルが飛ぶ | 原因3:使用範囲(UsedRange)の肥大化 |
| ファイルサイズが数MB〜数十MBある | 原因3・原因4:書式の重複コピー/画像の解像度過多 |
| 保存に時間がかかる・保存中に固まる | 原因3〜原因6の複合 |
| 他のファイルを開いているだけなのに全体が重い | 原因7:アドインの負荷 |
原因1:条件付き書式のかけすぎ
条件付き書式は便利な機能ですが、1つのシートに何十個も重ねてかけていたり、シート全体(列全体・行全体)に適用していたりすると、セルを操作するたびにExcelがすべての条件を再評価するため、動作が目に見えて重くなります。特に「コピー&ペーストを繰り返しているうちに、同じような条件付き書式が何重にも重複していた」というケースが非常に多く見られます。
確認方法:「ホーム」タブ→「条件付き書式」→「ルールの管理」を開き、「書式ルールの表示」を「このシート」に切り替えてください。ルールが10個を超えている、または「適用先」の欄が「$A:$A」のように列全体・シート全体になっている場合は要注意です。
ルール数をコピペで確認したい場合は、次のマクロが使えます(Alt+F11でVBEを開き、標準モジュールに貼り付けて実行)。
Sub CountConditionalFormats()
Dim ws As Worksheet
Set ws = ActiveSheet
MsgBox ws.Name & " のルール数:" & ws.Cells.FormatConditions.Count
End Sub
直し方:「ルールの管理」で不要なルールを選び「ルールの削除」。適用先が広すぎる場合は、範囲を実際にデータがある部分だけに絞り込んでください(例:$A:$A → $A2:$A500)。
原因2:配列数式・VLOOKUPの多用(再計算コストの爆発)
SUMPRODUCT・配列数式({ }で囲まれた数式)・列全体を参照するVLOOKUPやSUMIFは、セル数が増えるほど計算量が急激に膨らみます。「A列全体」を参照条件にしたSUMIFを1,000行に貼り付けると、Excelは内部的に膨大な回数の比較を行うことになり、これが再計算のたびに重さの原因になります。
直し方の例:列全体参照をやめ、実際にデータがある範囲だけを指定します。
' 重くなりやすい書き方(列全体を参照)
=SUMIF(A:A,"東京",B:B)
' 軽くなる書き方(実際のデータ範囲だけを指定)
=SUMIF(A2:A1000,"東京",B2:B1000)
また、VLOOKUPを大量に使っている場合は、検索範囲を最小限に絞る、または可能であれば新しいXLOOKUP関数(範囲全体を参照しても比較的軽い)に置き換えるのも有効です。数式が絡み合う集計そのものの見直しは、以下の記事も参考にしてください。
原因3:使用範囲(UsedRange)の肥大化
「Ctrl+End」を押したときに、データが入っている最後のセルよりずっと遠くまでカーソルが飛ぶことはありませんか。これは、実際にはデータがなくても「そこに何かがあった痕跡(書式・空白セルへのペースト履歴など)」が残っていて、Excelがそこまでを「使用範囲」として認識しているサインです。使用範囲が実データより極端に広いと、ファイルを開くたび・保存するたびに無駄な範囲まで処理することになり、動作が重くなります。

直し方(安全な手順):
- データの最後の行・列より外側にある不要な行・列をすべて選択する
- 右クリック→「削除」(Deleteキーでの内容削除だけでは使用範囲はリセットされません)
- ファイルを上書き保存する(保存のタイミングで使用範囲が再計算されます)
- 再度Ctrl+Endを押し、実データの右下セルにカーソルが飛ぶか確認する
手動での確認が難しい場合は、次のマクロで現在の使用範囲を数値で確認できます。
Sub ShowUsedRange()
MsgBox "使用範囲:" & ActiveSheet.UsedRange.Address & vbCrLf & _
"行数:" & ActiveSheet.UsedRange.Rows.Count & vbCrLf & _
"列数:" & ActiveSheet.UsedRange.Columns.Count
End Sub
マイクロソフト公式のサポート記事でも、行・列全体への書式設定がファイルサイズと動作速度を悪化させる仕組みが解説されています(出典:Microsoft Support「Excel for Windows のワークシートの不要なセル書式を削除する」)。
原因4:埋め込み画像・オブジェクトの解像度過多
スマートフォンで撮影した写真やスクリーンショットをそのままエクセルに貼り付けていると、1枚あたり数MBの画像が何十枚も埋め込まれ、ファイルサイズが一気に膨らみます。画面のスクロールが特にカクつく場合は、この原因の可能性が高いです。
確認方法:「校閲」タブまたは「ファイル」→「情報」→「ファイルサイズ」でおおよそのサイズを確認してください。数MB以上あり、かつ画像を多用している場合は要注意です。
直し方:画像を1つ選択した状態で「図の形式」タブ→「図の圧縮」を選び、「Web用(低解像度)」を選択して「すべての図に適用」にチェックを入れて実行します。印刷を前提としない社内共有用の資料であれば、この圧縮だけでファイルサイズが数分の1になることも珍しくありません(出典:Microsoft Support「Excel スプレッドシートのファイル サイズを小さくする」)。
原因5:揮発性関数の連鎖(NOW・TODAY・RAND・INDIRECT・OFFSET)
NOW関数やTODAY関数、RAND関数、INDIRECT関数、OFFSET関数は「揮発性関数」と呼ばれ、シート内のどこか1つのセルが変化しただけでも、Excel全体が強制的に再計算されます。これらを大量のセルにコピーしていると、ちょっとした入力のたびに全シートの再計算が走り、動作が重くなります。
直し方:揮発性関数の使用箇所を最小限にする、または「数式」タブ→「計算方法の設定」を「自動」から「手動」に切り替え、必要なタイミングでF9キーを押して再計算する運用に変更する方法があります(ただし手動計算は数式の反映漏れに注意が必要です)。INDIRECTを使った参照については、こちらの記事で安全な使い方を解説しています。

原因6:使っていないシート・外部リンクの残骸
過去の作業で作った検証用シートを消し忘れていたり、以前参照していた別ファイルへのリンク(外部参照)が残ったままになっていたりすると、ファイルを開くたびにその参照先を確認しにいく処理が発生し、動作が遅くなる原因になります。
確認方法:「データ」タブ→「リンクの編集」を開き、参照先の一覧が表示されるか確認してください。使っていない外部ファイルへのリンクがあれば「リンクの解除」を行います。あわせて、シート見出しを右クリックして使っていないシートを削除しましょう(削除前に念のためコピーを保存しておくと安心です)。
原因7:アドイン・COMアドインの負荷
会計ソフト連携や旧バージョンのPDF変換ツールなど、常駐タイプのアドインを複数入れていると、Excel起動時・操作時にそれらが裏で動作し、ファイルの重さとは別にExcel全体の動作を遅くしていることがあります。
確認方法:「ファイル」→「オプション」→「アドイン」→画面下の「管理」で「COMアドイン」を選び「設定」を押すと、有効になっているアドインの一覧が表示されます。使っていないものはチェックを外して無効化し、Excelを再起動して体感速度を比較してみてください。
これでも重いときの最終手段
上記を一通り試しても改善しない場合は、次の方法も検討してください。
- ファイルを分割する:1つのブックに何十枚もシートが入っている場合、用途ごとに別ファイルへ分けるだけで体感速度が大きく改善することがあります。
- 「名前を付けて保存」でファイルを作り直す:長年上書き保存を繰り返したファイルは、内部的に不要な情報が蓄積していることがあります。新規ブックにシートをコピーして保存し直すと、それだけで軽くなるケースがあります。
- PC・Office側の要因を切り分ける:他のExcelファイルでも同様に重い場合は、ファイル固有の問題ではない可能性があります。
なお、ここまでの方法を試しても「そもそもファイルが開かない・クリックしても反応がなく応答なしのまま固まる」という場合は、原因が異なります。以下の記事で8つの原因を切り分けていますので、あわせてご確認ください。

よくある質問
Q. ファイルサイズはどれくらいなら「重い」と言えますか?
A. 明確な基準はありませんが、社内共有用の一般的な業務ファイルで10MBを超えている場合は、画像や書式の見直しを検討する目安になります。
Q. 条件付き書式やUsedRangeのリセットで、データが消えることはありませんか?
A. ルールの削除や行・列の削除は、データそのものではなく書式や空の範囲を対象にした操作です。念のため作業前にファイルのコピーを取ってから進めてください。
Q. マクロ(VBA)を使うのが怖いのですが、必須ですか?
A. 必須ではありません。この記事のマクロは「今の状態を数値で確認する」ための補助であり、手動の操作だけでも直し方は完結します。

まとめ:エクセルが重いときは、壊れているのではなく「積み重ね」が原因
ファイルが重くなる原因の多くは、日々の作業の中で少しずつ積み重なった条件付き書式・数式・画像・書式のコピーです。つまり、原因さえ切り分ければ、今日から確実に軽くできるということでもあります。一つずつ確認していけば、必ず改善のきっかけが見つかります。焦らず、できるところから試してみてください。
数式まわりの重さが気になった方は、こちらの記事もあわせてご覧ください。集計トラブルの原因と直し方を扱っています。

コメント