スプレッドシートが重い・固まる時に試すべき7つの対処法

「セルに入力してから反映されるまで、何秒も待たされる…」 「スクロールするたびにカクカクして、仕事にならない…」

そんなお悩み、ありませんか?今回は、Googleスプレッドシートが重い・固まるときに試すべき対処法を、すぐできるものから本格的な対策まで、7つ紹介していきます。

リュージと、茶色いポメラニアン・チョコの会話を通して、原因を一つずつ見つけていきます!

なんでスプレッドシートって重くなるの?

リュージ、仕事で使ってるスプレッドシート、最近セルに文字を打ち込んでから反映されるまで、すごく時間がかかるんだよね…

それはストレスだね…。実は、スプレッドシートが重くなる原因はいくつかあって、大抵はそのシートの「健康状態」に問題があることが多いんだ

パソコンのスペックが悪いのかと思ってた…

スプレッドシートの計算処理は、実はパソコンではなくGoogleのサーバー側で行われているんだ。だから、パソコンを買い替える前に、まずはシートそのものを見直してみる価値があるよ

 Googleスプレッドシートの計算処理は、パソコン本体ではなくGoogleのサーバー側で行われている。そのため、動作が重い原因の多くは、パソコンのスペック不足よりも、シート自体の「作り」に起因していることが多い。データ量、関数の使い方、書式設定など、複合的な要因が絡み合って動作を遅くしているケースがほとんどであるため、原因を一つずつ切り分けて対処することが重要である。 

①不要な行・列・シートを削除する

まず何から確認すればいいの?

一番シンプルなのは、使っていない行・列・シートを削除すること。実は、一見空白に見えるセルでも、書式設定などが残っていると、それだけでファイルの負荷になっているんだ

空白なのに負荷になるの!?

うん、意外と見落としがちなポイントなんだ。シートの右端や下端まで一度スクロールしてみて、明らかに使っていない行や列があれば、右クリックから「行を削除」「列を削除」を選んでみて

使っていないシートも、消した方がいいの?

うん、もう使っていないシートがあれば、削除するか、別のファイルに分けておくといいね

 使用していない行・列・シートは、見た目には空白であっても、書式設定などの情報が残っていると処理対象としてカウントされ、ファイルの負荷を高める原因になる。シートの右端・下端までスクロールし、明らかに不要な行や列があれば、右クリックメニューから「行を削除」「列を削除」で完全に取り除くことが有効である。使用していないシート自体も、削除するか別ファイルに分離しておくとよい。 

②「揮発性関数」の使用を見直す

関数も原因になるって聞いたことあるけど、本当?

うん、特に注意したいのが「揮発性関数」って呼ばれる種類の関数なんだ

「揮発性関数」って何?

TODAY関数やNOW関数、RAND関数みたいに、シートを開くたび、編集するたびに、常に再計算され続ける関数のことだよ。これを大量に使っていると、いつまでも計算が終わらなくて、重くなりやすいんだ

TODAY関数、前に教えてもらったやつだ!これも原因になるんだね

うん。対策としては、A1セルに一箇所だけ「=TODAY()」を入れて、他のセルからは「=A1」のように参照する形にすると、無駄な再計算を防げるよ

 TODAY・NOW・RAND・RANDBETWEENなどの「揮発性関数」は、シートを開くたびや編集するたびに常に再計算が発生する特性を持つ。これらを複数のセルで多用していると、常に再計算処理が走り続けることになり、動作が重くなる大きな原因となる。対策としては、1つのセル(例:A1)にのみ揮発性関数を入力し、他のセルではそのセルを参照する形(=A1)にすることで、無駄な再計算の発生を最小限に抑えられる。 

③重い関数の範囲指定を見直す

VLOOKUPとかもよく使うんだけど、これも重くなる原因なの?

関数自体というより、範囲の指定の仕方が原因になることが多いんだ。たとえば「B:Z」のように、列全体を丸ごと指定していない?

やってるかも…!それの何がいけないの?

「B:Z」のように書くと、スプレッドシートは一番下の見えない行まで、律儀に計算し続けてしまうんだ。数万行分の無駄な計算をさせているのと同じことになるんだよ

どうすればいいの?

「B2:Z1000」のように、必要な範囲だけをきちんと指定してあげるだけで、負荷はかなり軽くなるよ。IMPORTRANGEやARRAYFORMULAといった関数も、同じように範囲指定を絞ることが大事だね

 VLOOKUP・IMPORTRANGE・ARRAYFORMULAなどの関数を使う際、「B:Z」のように列全体を指定してしまうと、実際にはデータが存在しない行まで含めて計算対象になってしまい、大きな負荷がかかる。「B2:Z1000」のように、実際に必要な範囲だけを明確に指定することで、無駄な計算処理を大幅に減らすことができる。特にデータ量の多いシートほど、この一手間の効果は大きい。 

④確定した過去データは「値」に変換する

このシート、去年の分の売上データも全部残ってて、そこにも関数が入ってるんだけど、これも原因になる?

それは大いに関係あるよ。「去年の売上」って、もう変わらない確定した数字だよね?なのに関数を残したままにしていると、シートを開くたびに毎回律儀に再計算が走ってしまうんだ

確かに、もう変わらないのに毎回計算するのは無駄だね。どうすればいいの?

確定したデータの範囲をコピーして、「編集」から「特殊貼り付け」→「値のみ貼り付け」を選ぶんだ。そうすると、関数がただの数字に置き換わって、負荷が大きく減るよ

 すでに確定していて今後変わることのない過去のデータに、関数(計算式)を残したままにしていると、シートを開くたびに不要な再計算が発生し続ける。該当範囲をコピーし、「編集」→「特殊貼り付け」→「値のみ貼り付け」を選択することで、関数を単なる数値データに変換できる。計算式の数が減ることで、シート全体の負荷を大きく軽減できる。 

⑤条件付き書式や画像の使いすぎに注意

条件付き書式もいろんな場所に設定してるんだけど、これも影響あるの?

うん、条件付き書式やフィルタ、大量の画像なんかも、描画の処理を重くする原因になるんだ

条件付き書式って、どこで確認できるの?

シート全体を選択した状態で、「表示形式」から「条件付き書式」を開くと、設定されているルールが一覧で表示されるよ。不要なものはゴミ箱アイコンから削除できるんだ

画像はどうすればいいの?

画像を直接シートに貼り付けていると重くなりやすいから、画像自体は削除して、Googleドライブに保存したURLだけを記載する形にすると、ファイルサイズを大きく減らせるよ

 条件付き書式やフィルタ、シート内に直接貼り付けた画像なども、描画処理の負荷を高める要因となる。条件付き書式は、シート全体を選択した状態で「表示形式」→「条件付き書式」を開くと一覧確認でき、不要なルールはゴミ箱アイコンから削除できる。画像については、シートに直接貼り付けるのではなく、Googleドライブなどの外部ストレージに保存し、そのURLリンクをセルに記載する形に置き換えることで、ファイルサイズを大幅に削減できる。 

⑥ブラウザ側の設定・環境を見直す

シート自体を見直す以外にも、何かできることはある?

ブラウザ側の環境も見直してみるといいよ。まず、Chromeブラウザのタブをたくさん開きすぎていない?

確かに、いつも20個くらい開きっぱなしにしてるかも…

それはパソコンのメモリを圧迫している可能性が高いね。使っていないタブは閉じてみて。あと、Chromeの「ハードウェアアクセラレーション」という設定がオンになっているかも確認してみるといいよ

それは何をする設定なの?

画面の描画処理を、パソコンのグラフィック機能に任せる設定だよ。「設定」→「詳細設定」→「システム」から確認できるから、オフになっていたらオンにしてみて。あわせて、ブラウザのキャッシュをクリアするのも効果的だね

 シート自体に問題がない場合、ブラウザ側の環境も見直すとよい。Chromeブラウザのタブを多数開いたままにしていると、パソコンのメモリを圧迫し、スプレッドシートの動作にも影響を及ぼすことがある。使用していないタブは閉じることが望ましい。また、Chromeの「設定」→「詳細設定」→「システム」から確認できる「ハードウェアアクセラレーション」がオフになっている場合、オンに変更することで描画処理が改善することがある。あわせて、ブラウザのキャッシュをクリアすることも、動作改善に効果的な場合がある。 

⑦それでも重い場合は、ファイルを分割・複製する

ここまで試しても、まだ重かったらどうすればいいの?

その場合は、思い切って「分割」か「複製」を検討してみよう。たとえば、月別・事業部別にファイルを分けて、必要なときだけ別ファイルからデータを参照する、という方法があるよ

「複製」っていうのは?

実は、長く使い込んだシートは「変更履歴」がどんどん蓄積されていて、これが重さの原因になっていることもあるんだ。ファイルをコピーして新しいスプレッドシートを作ると、変更履歴がまっさらになって、軽くなることがあるよ

気をつけることはある?

複製すると、ファイルのIDが変わってしまうんだ。もし他のシートからIMPORTRANGE関数で参照されていたり、プログラムでファイルIDを使っていたりする場合は、そちらの修正も忘れずにね

 ここまでの対処法を試しても改善しない場合は、ファイルの分割や複製を検討する。1つのシートにあらゆるデータを詰め込んでいる場合は、月別・事業部別などにファイルを分割し、必要な範囲だけをIMPORTRANGE関数で参照する構成にすることで、個々のファイルの負荷を軽減できる。また、長期間使用しているシートは「変更履歴」が蓄積されて重さの原因になっていることがあり、ファイルをコピーして新しいスプレッドシートとして作り直すことで、変更履歴がリセットされ動作が軽くなる場合がある。ただし、複製するとファイルIDが変わるため、他のシートからIMPORTRANGE関数で参照されている場合や、GASなどのプログラムでファイルIDを利用している場合は、あわせて修正が必要になる点に注意したい。 

まとめ:まずは「見えない負荷」を疑おう

今日でスプレッドシートが重くなる原因、だいぶわかった気がする!

最後にまとめると、今日紹介したのはこんな内容だったね

対処法ポイント
①不要な行・列・シートを削除空白でも書式が残っていると負荷になる
②揮発性関数を見直すTODAY・NOW等は1セルにまとめて他は参照する
③関数の範囲指定を絞る「B:Z」ではなく「B2:Z1000」のように限定する
④確定データを値に変換「特殊貼り付け」→「値のみ貼り付け」で数式を排除
⑤条件付き書式・画像を整理不要なルールを削除、画像はURLリンクに置換
⑥ブラウザ環境を見直すタブを閉じる、ハードウェアアクセラレーションの確認
⑦ファイルの分割・複製用途別に分割、変更履歴のリセットで軽量化

僕はまず、不要な行や列の削除から試してみるよ!

いいと思うよ。1つずつ試していけば、どこが原因だったのか自然と見えてくるはずだから、焦らず順番に確認してみてね

リュージ、今日も教えてくれてありがとう!

 スプレッドシートが重くなる原因は「データ量」「関数」「書式」「環境」など複合的であることが多い。まずは不要な行・列・シートの削除、揮発性関数や関数範囲の見直しといった、比較的簡単に試せる対策から始め、それでも改善しない場合はファイルの分割や複製といった、より本格的な対策を検討するとよい。定期的にシートの「健康状態」を見直す習慣をつけることで、快適な作業環境を維持しやすくなる。 

関連記事

  1. スプレッドシートのプルダウンの作り方|色付け・連動・複数選択まで解説

  2. Googleカレンダーを共有するやり方!家族・チームでの使い分けも解説

  3. Googleスプレッドシートの SUMIF・COUNTIF関数の使い方(条件範囲の指定ミスも解説)

  4. Googleスプレッドシートの条件付き書式の使い方(複数条件・色が反映されない時の対処法も解説)

  5. スプレッドシート特有のエラー表示(#N/A、#ERROR!)の解説

  6. スプレッドシートのショートカット、これだけ覚えれば仕事が変わる【厳選5つ】

  7. スプレッドシートをスマホで改行するには?Enterで確定されてしまう問題を解決

  8. Googleスプレッドシートのフィルタ機能の使い方(「フィルタ」と「フィルタ表示」の違いも解説)

  9. スプレッドシートで自分だけフィルタをかける方法!スマホでの注意点も解説