スプレッドシートが重すぎる…
どう対処したら良い?
ネイチャーエンジニアの亀田です。
スプレッドシートが重すぎる!
そんな時は以下を確認しましょう。
2. ブラウザのタブを開きすぎていないか確認する
3. スプレッドシートで使っている計算式を確認する
なお、3.はExcelなど他の計算ツールでも同様のことが起こり得ます。
以下で、この解決策の詳細を解説します。
スプレッドシートが重い時に確認すること
Google Chromeの設定「ハードウェア アクセラレーション」がONになっているのを確認する
「ハードウェア アクセラレーション」は、Chromeのブラウザの画面描画に関する設定です。
これがOFFになっているとスプレッドシートの動作に影響を及ぼす可能性があるので、設定を確認しましょう。
■ 手順
1. Chrome のメニューボタンを押して、「設定」を開く
2. 一番下までスクロールして、「詳細設定」を開く
3. 「ハードウェア アクセラレーション…」の設定がONか確認
ブラウザのタブを開き過ぎていないか確認する
ブラウザのタブを開いていると、その分メモリを消費します。
大量のタブを開きっぱなしにしていると、大量のメモリを消費し、コンピュータ全体のパフォーマンスを低下させます。
不要なタブが開いている場合は閉じましょう。
データ量の多いスプレッドシートは、メモリも大量に食います。
大量のデータのあるスプレッドシートを複数開いていないかも確認してください。
なお、現在のメモリ使用量は、
- Macの場合は「アクティビティモニタ」
- Windowsの場合は「タスクマネージャー → パフォーマンス」
で確認できます。
それでもあまり改善しない場合は、一度ブラウザを再起動するとリフレッシュされて快適になることがあります。
スプレッドシートで使っている計算式を確認する
スプレッドシートの計算式の使い方によっては、パフォーマンスが落ちます。
具体的には、大量の計算が高頻度で起こるような書き方をしていないかをチェックします。
プログラミングの経験が無い方は、気付きづらい確認ポイントだと思います。
確認すべきポイントは2点です。
1. 行の挿入・削除時に大量の再計算を生み出していないか
「行を挿入・削除した時に重い」という時、一番やりがちなのがRows()関数です。
こんな感じに使っていたら注意。
これ、行数が多くないうちは問題ないのですが、1万行とかになってくるとめちゃめちゃ重くなります。
なぜなら、例えば3,000行目に1行挿入すると、そこから下の7,000行が再計算されるんですね。
行数が多くなることが想定されるシートでは、この関数を使わないことをオススメします。
ちなみに、「=(1行上のセル)+1」みたいにして関数を使わなくても、再計算が走ることは一緒なので回避できません。
2. 大量に参照されているセルはないか
以下のように共通設定値があったり、値を引き継ぎまくって参照している場合も注意です。
このサンプルの、「共通設定値」のセルの値が更新されると、それを参照して計算しているセルが再計算対象になってしまいます。
またこのサンプルの場合、もう1つ問題があります。
それは計算式を一旦格納して、その値を他のセルが参照する、というのを繰り返していることです。
例1.
セル1:2+3=5
セル2:[セル1の値]*3=15
例2.
セル1:(2+3)*3=15
この場合、例1と例2の計算結果は一緒ですが、処理としては同じではありません。
例1の場合は、「セル1から値を取得する」という処理が走るため、例2よりもコンピュータが処理する量が多くなります。
このような参照も数十行程度であれば影響はありませんが、やはり数千行、数万行となってくるとパフォーマンスに大きな影響を与える場合があります。
ちなみに、同様にセルの参照数が多いという理由でVLOOKUPの多用も影響が大きいです。
以下のような使い方を数千行もしている場合は確認してみてください。
おわりに
特に3番目の計算式の問題は、データ量が多くならないと発生しません。
僕も、
- アプリ開発におけるデータ管理
- 全国各地で見つけた生き物データ管理
などでスプレッドシートを多用していますが、データ量が増えて重くなった経験はよくあります。
そんな時の原因はたいてい、この記事で紹介したような計算式の問題でした。
スプレッドシートは大変便利なツールです。
確認ポイントを抑えて、できるだけストレスなく使えるようにしたいですね。
では、また。