

ちょっと数式を直そうとしたら、全部にエラーが出た…

前任者が作ったシート、怖くて誰も触れないまま使い続けてる…
あなたの職場に、そんな時限爆弾のようなスプレッドシートはありませんか?
属人化したシートは、担当者が休んだり退職したりした瞬間に業務に大きな支障が出ます。
しかし実はこれ、そもそも設計の基本ルールが守られていないことが原因なのです。
裏を返せば、正しい設計さえ知っておけば、担当者の不在に怯えることのない「誰でも安心して使えるシート」は作れるということです。
そこで本記事では、最も身近な「売上管理表」を例にして、多くの職場で目撃される3つの失敗事例と、それを防ぐ設計の鉄則について解説します。
この記事を読み終える頃には、特定の誰かに依存しない「チーム全員が迷わず使えるシート」を作るための具体的な手順が身についているはずです。
事例1:データが増えるたびに列の数も増やす
【よくある悪い例】

4月の売上が終わったから、右隣に5月の列を追加しよう

新しい商品が出たから、C列とD列の間に新しい商品用の列を入れよう
このように、新しいデータが発生するたびに、列の構成を変えて運用していませんか?

「見やすそうだから」という理由で採用されがちですが、データ管理としては最も悪手です。
なぜ、列を増やしてはいけないのでしょうか?
理由は大きく2つあります。
- 計算式のメンテ地獄
-
列が増えるたびに、「今年度の合計」などを出す計算式(SUM関数の範囲など)を修正し続けなければなりません。
修正漏れは、そのまま決算数値のズレに繋がります。
- 分析不能
-
「昨年対比」を出そうとしても、参照すべき列が毎月ズレていくため、数式での自動計算が困難になります。
結局、目視と電卓で集計することになりかねません。
【設計の鉄則】列の数は固定してデータは縦に積む
スプレッドシートを使う時の鉄則は、データをひたすら「縦」に積んでいくことです。
「4月」「5月」や、「商品A」「商品B」のように、データの中身が増えるたびに「列」を継ぎ足してはいけません。
そうではなく、「日付」や「カテゴリ」といった共通の項目(列)を1つだけ用意し、そこにデータを縦に積み上げていくのが正解です。


でも、それだと、パッと見で全体の状況が分からなくない?
そう不安に思う方もいるかもしれません。
確かに、データを縦に積んだだけの表は、非常に見づらく、無機質です。
ですが、安心してください。
実は、この縦積みのリストこそが、スプレッドシートの機能を100%使いこなすための唯一の条件なのです。
データを縦にさえ積んでおけば、
- ピボットテーブルを使って、あらゆる角度からの分析を一瞬で行う
- SUMIFS関数などを使って、データが増えても二度と修正がいらない全自動の集計式を作る
こうした高度な処理が、驚くほど簡単に実現できるようになります。

事例2:計算式が入ったセルに、直接数値を手入力
【よくある悪い例】
例えば、単価の列には本来、商品マスタから価格を引用する数式(VLOOKUPやXLOOKUPなど)が入ってることが一般的です。
しかし、

この取引先だけは特別価格だから
という理由で、一つの行だけ数式を削除し、直接数値を上書き入力していませんか?

一見、臨機応変に対応しているように見えますが、これはスプレッドシート運用における「最大のタブー」です。
なぜ、数式を手入力で上書きしてはいけないのでしょうか?
- 数式か手入力なのか見分けが付かない
-
シートを見ただけでは、「どのセルが数式で、どのセルが手入力なのか」が全く判別できません。
「あ、ここは手入力だから触っちゃダメだ」と気づけるのは、入力した本人だけです。
- コピペ一発でデータが消滅する
-
例えば、他の担当者が気を利かせて、上の行から数式をオートフィル(コピー)したとします。
するとその瞬間、上からコピーされた数式によって、手入力した「特別価格」は上書きされてしまいます。
警告も出ることなく、勝手に正規価格に戻ってしまうのです。
【設計の鉄則】例外のための専用列を作る
計算式が入っているセルは聖域です。
いかなる場合も手入力で上書きしてはいけません。
例外的な処理が発生する場合は、数式を壊すのではなく、仕組みで解決します。
例えば売上管理表を例に出すなら、以下のように列を設計します
・値引き専用の列:ここだけ手入力を許可する(例:200)
・適用単価専用の列:計算結果を表示する

「適用単価」に出力する計算式も以下のように変更します。
=(定価) - (値引き)
こうすれば、誰が見ても「この行は値引きがあるんだな」と一目で分かります。
また、「値引き額」の列は独立しているため、上からコピーをしてデータが勝手に書き換わる事故も100%防ぐことができます。
このように、例外のための専用列を作ることがスプレッドシートの設計においてとても重要です。
事例3:1つのセルに複数の情報を詰め込む
【よくある悪い例】
イレギュラーな対応が発生した際、入力する場所がないため、 「備考欄」などの一つのセルに、文章で情報を残していませんか?
例)
- 「※特急対応のため +1,000円」
- 「5/1 山田さんが対応済み」

一見、情報は記録されているように見えますが、データ活用としては、よろしくないです。
なぜ、1つのセルに情報を詰め込んではいけないのでしょうか?
- 集計や検索が一切できない
-
例えば「特急対応の件数を知りたい」と思っても、セルの中身はただの「長い文章」です。
SUM関数で金額を足すこともできなければ、日付でフィルタをかけて抽出することもできません。 - 結局、目視確認のアナログ作業になる
-
データとして使えないため、結局は担当者が一つ一つ備考欄を目で見て、「あ、これは特急だ」「これは5月だ」と判断し、手動で集計する羽目になります。
これでは表計算ソフトを使っている意味がありません。
【設計の鉄則】1つのセルには1つの意味だけを持たせる
後で使う可能性がある情報は、必ず独立した列として切り出します。

列が増えると横に長くなって見にくいと感じるかもしれません。
しかし、データとして活用するためには、情報を分解して管理することが不可欠です。
独立した列にさえなっていれば、
「追加料金の合計を一瞬で出す」
「山田さんの対応分だけを抽出する」
といった操作が、誰でも簡単にできるようになります。
これでも解決できない高度な課題に直面したら
ここまで紹介した鉄則を守れば、誰でも安心して使えるシートを作ることが出来ます。
しかし、どれだけ設計を工夫しても解決できない課題も存在します。
例えば…
- データが数万行を超えて、重すぎて動かない
- 「承認されたらPDFを発行してメールする」といった自動化がしたい
こうした課題を、無理やり関数だけで解決しようとすると、シートが複雑になりすぎて壊れやすくなります。
私は、こうした仕組みの限界を突破するために、GAS(Google Apps Script)を活用したシステム構築を支援しています。
複雑な処理をすべてプログラムで裏側に隠し、ボタン一つで思いのまま動くシートに作り変えることで、属人化や操作ミスを根本から防ぎます。
- 今のシートをベースに、もっと業務を自動化したい
- 壊れない仕組みをプロに作ってほしい
とお考えの方は、ぜひ一度ご相談ください。
MASAあなたのチームに最適な解決策をご提案します
まとめ
ここまでスプレッドシートの属人化を防ぐための、設計方法について解説してきました。
大事なポイントは以下の3点です。
・列の数は増やさない(データは縦に積む)
・数式を手入力で書き換えない(例外は専用列を作る)
・一つのセルに情報を詰め込まない(情報は分解する)
これらのルールを守って設計するだけで、誰が触っても壊れない、安心できるシートを作ることができます。
また、ここで紹介した方法では解決が出来ない場合は、私にご相談ください。
GAS(Google Apps Script)を活用して、あなただけにあったスプレッドシートの仕組みをご提案いたします。
ここまで読んでくださりありがとうございました。
私はGoogleが提供するプログラミングツールである、GAS(Google App Script)を活用して面倒なスプレッドシート業務を自動化や効率化するサービスを提供しています。
もし今の業務の中で
- 毎回の手作業に手間を感じる
- もっと業務を効率化したい
- ルーティン業務を自動化したい
このような不満を抱えてらっしゃるなら是非一度ご連絡ください。
MASA「こんなことできる?」くらい軽めのご相談でも大歓迎です!