スプレッドシートが重いときに効く対処を、効果の大きい順に

記事
IT・テクノロジー
セルを1つ書き換えるたびに、画面が一瞬止まる。スクロールがカクつく。
保存に何秒もかかる。ファイルサイズはそこまで大きくないはずなのに、重い。

原因はだいたい複数重なっていますが、効果の大きさには順番があります。
手当たり次第に触るより、効果が大きいものから潰した方が早く軽くなります。
仕組みを説明しながら、効果の大きい順に並べます。

■ 1位:列全体・行全体を参照する数式をやめる

=SUMIFS(C:C,A:A,"東京") のように列全体を指定すると、Excel/スプレッドシートは
その列の最終行(100万行超)まで見に行きます。実データが300行しかなくても、
残り99万行以上も毎回スキャン対象になります。 これが同じシートに何十個も
入っていると、再計算のたびに重い処理が積み重なります。

対処は、範囲を実データの行数に絞ることです。

=SUMIFS(C2:C1000,A2:A1000,"東京")

行が増える予定があるなら、元データをテーブル化(Ctrl+T)しておくと、
範囲を都度広げ直さずに済みます。

■ 2位:揮発性関数を減らす

NOW、TODAY、RAND、RANDBETWEEN、OFFSET、INDIRECTといった関数は「揮発性関数」と
呼ばれ、シート内のどこか1セルでも変更があるたびに、無関係な場所にあっても
再計算されます。 通常の数式は関係するセルが変わったときだけ再計算されるのに対し、
揮発性関数はこのルールの外にあります。

これが数十個あると、他のセルを1つ触っただけでシート全体が固まる原因になります。
日付や乱数を都度更新する必要がないなら、値として貼り付けてしまうか、
更新が必要な範囲だけに絞ってください。

■ 3位:条件付き書式のルールと範囲を絞る

条件付き書式は、対象範囲のすべてのセルに対してルールを毎回評価します。
列全体に適用していたり、ルールの数自体が多いと、再計算のたびに
「範囲 × ルール数」ぶんの評価が走ります。

使っていないルールを削除し、適用範囲を実データの範囲までに絞るだけで、
体感できるくらい軽くなることがあります。特に「セルの強調表示ルール」を
コピー&ペーストで他のシートにも増やしていった場合、意図せず似たルールが
何十個も重複していることがあるため、ルールの管理画面で一覧を確認して
みてください。

■ 4位:使っていない範囲の書式が「使用範囲」を広げていないか確認する

一度でも書式を当てたセルは、そこにデータが無くても「使用範囲」として
記憶されます。Excelでは対象シートでCtrl+Endを押し、実データよりはるか下・右に
カーソルが飛ぶなら、そこまでが使用範囲として扱われている証拠です。
ファイルの読み込み・保存が重い場合、これが原因のことがあります。

対処は、実データより外側の行・列を選択して削除(単なるDeleteではなく、
行・列ごと削除)し、保存し直すことです。Excelはこの「使用範囲」の考え方が
はっきりしていますが、Googleスプレッドシートも同様に、書式だけ当てた
セルがシートの末尾として記憶されます。スプレッドシートの場合は、
末尾の余分な行・列を選択して右クリックから「削除」を選んでください。

■ 5位:配列数式・QUERY・IMPORTRANGEの多用を見直す

Googleスプレッドシート特有の重さとして、QUERYやIMPORTRANGE、ARRAYFORMULAを
同じシート内に何個も置いていると、それぞれが参照先全体を毎回読みに行くため、
シートを開くたびに重くなります。同じ参照先を複数の数式で使っているなら、
1つの数式でまとめて計算し、他のセルはその結果を参照する形に変えると
負荷が下がります。Excelにはこの3関数自体がありませんが、代わりに
Power Queryや外部ブックへのリンクを多用すると同じように開くたびの
読み込みが重くなるため、考え方は共通しています。

■ それでも重いとき(一時対処)

ここまでの対処が難しい・時間が無い場合の一時しのぎとして、Excelなら
「数式」タブの計算方法を「手動」に切り替える方法があります。入力のたびに
再計算しなくなるため作業自体は軽くなりますが、最新の結果を見るには
都度F9で再計算する必要があるため、根本対処ではありません。

Googleスプレッドシートには「手動」という選択肢自体がなく、常に自動再計算
されます。代わりに、ファイルの設定から再計算の頻度を「変更時」
「変更時と1分ごと」「変更時と1時間ごと」から選べます。NOWやRANDのような
揮発性関数が原因で重い場合は、頻度を下げるだけでも体感がやわらぐことが
あります。ただしこれも計算方法の変更と同じく、原因そのものを消す
対処ではない点は同じです。

■ やってはいけないこと

重いからといって、シートをコピーして新しいファイルに移すだけで済ませること。
ファイルは軽くなったように見えても、列全体参照や揮発性関数、余分な使用範囲は
そのままコピーされるため、データが増えればすぐまた同じ重さに戻ります。

■ それでも解決しないとき

・上から順に試したのに、まだ体感できるほど軽くならない
・どの数式・どの範囲が重さの原因か、自分では特定できない
・複数人で共同編集していて、原因を切り分ける時間が取れない

このあたりまで来たら、ファイルの中身を見ながら原因を特定した方が早いです。

私はExcel・スプレッドシートの調査と軽量化を承っています。
何が重さの原因だったかを一覧にしてお返ししています。

――
この記事の執筆には生成AIを活用しています。内容は実際の挙動を確認して書いています。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す