数十万件のレコードを扱うとかなら素直にDBを使いましょうとか言えるのですが、数千件とか1万数千件とかなら微妙かなと思います。(DB絡むと環境の用意とかフロー設計とか面倒なので・・・)
で、スプレッドシートでいいんじゃないの、と思って聞き返すのですが数千件とかのレコードで既に重くて仕事にならないんですと。
本当かな?と思って見せてもらうのですが、皆さん結構作りこんでいてそりゃ重いよなと感じることが多いので新しいサービスとかツール入れる前にこんな使い方してみてはどうでしょう。という記事です。
重いと思ったらとりあえずここを見直しましょう
- SUMIFS、COUNTIFSなどは極力少なくする
- セル数が多い場合はARRAYFORMULA関数を避ける
- 条件付き書式は使用しない
- 自動計算オプションを無効にする
- フィルターを使わない
- キャッシュを削除してみる
- 不要なセル行や列を消す
ARRAYFORMULAはセル数が多くなると結構急に重くなります。
範囲全体に計算結果を返す関数なので数百セルくらいなら個別に関数書くよりも早いかもですが、たぶんセル数が多くなると結果を返す範囲が多くなるので計算よりも反映に時間がかかっていると思います。
根本的にこうしましょう
↑の内容は小手先で対応するものです。
根本的にはそもそもまずデータを貯めるファイルと参照、計算、集計するファイルをわけましょう。
それだけでだいぶ軽くなると思います。
既に結構作りこんでいてやり直しは厳しい・・・という方が多いかと思いますが・・・
下記2つの考え方徹底すればだいぶやりやすいのではないでしょうか。
- 1ファイルにつき1つの役割に絞る
- 役割は、データを貯める、集計する、参照するできっちり分ける
役割については、
・データを貯める… 生データを一切加工せず貯めていくだけにしましょう。変に手を加えると却って面倒になります。ただ、あとで集計や参照するときにどんなデータが必要かは考えておきましょう。
・集計する… 日付や氏名で実績は合計どのくらいか計算したりしますよね。importrange関数とかでデータを引っ張ってきてそれを計算しましょう。
集計する月なんかが決まっているのであればquery関数でひっぱってくるデータ絞ってから計算するともっと軽くなると思います。
・参照する… 貯めたデータや集計した結果を人が見てわかりやすくすると思います。これもファイルは別で用意しましょう。なんならlooker studio使うといいと思います。慣れるまでは大変かもしれませんが便利ですよ。
原則としては
つまり、1つのファイルにいくつもシートを入れて関数仕込みまくって条件付き書式が大量に設定してあると重いってことです。
それぞれ役割という考え方でファイルを分けるとスッキリします。
ちなみに、ネットワークが遅いとか不安定とかでもスプレッドシートは重くなりますがそれはスプシ使う側からはどうしようもありません。
スプシ以外も重くて大変なはずですのですぐにでもネットワークを見直しましょう。
コメント