1文字直したら前年の集計が消えた。同じ見出しを見ている数式が3本あった
6拠点・スタッフ約70名の会社を経営しています。
資金繰りを1つのスプレッドシートで管理しています。タブは80枚以上。毎月の台帳から拠点ごとの数字を集計し、年ごとのサマリにまとめる作りです。
そこに、ずっと前から事業名の表記ゆれが残っていました。正しい表記に対して、漢字が1文字だけ違う。同じ事業なのに、書き方が2通り混ざっている状態です。
見た目が悪いだけだと思っていました。だから直しました。
結果、前年サマリの1行が、丸ごと空になりました。
直した瞬間、前年の1行が空になった
やったことは単純です。月次タブの見出しを、正しい表記に書き換えた。それだけです。
置換した直後、前年サマリを開いたら、その事業の行が空欄になっていました。
エラーは1つも出ていません。 #REF! も #N/A も無い。ただ、あるはずの数字が無い。
すぐ元に戻しました。戻したら数字は復活しました。つまり、私の置換が原因です。
ここで気づきました。見出しは、表示のためのラベルではなかった。 集計の条件そのものでした。
同じ見出しを見ている場所が3つあった
調べたら、その見出しの文字列を見ている場所が3か所ありました。
月次タブの集計式 … 台帳から金額を拾うとき、事業名を条件にしている
年次サマリの検索式 … 月次タブの1行目から、事業名を探して列位置を特定している
台帳の事業名の列 … 入力される値そのもの
厄介なのは1と2の書かれ方が違ったことです。
2は「正しい表記」を探しにいく。1は「省略した表記」を探しにいく。わざと違う文字列で書かれていました。 どちらも当時は動いていたので、誰も直さなかった。
つまり、この3か所は足並みを揃えて同時に直すしかない。1か所だけ直すと、他の2か所が対象を見失います。

そして見失ったとき、何が起きるか。
年次サマリの検索式は、外側が「見つからなければ空を返す」形で包まれていました。 該当なしをエラーにせず、静かに空にする。親切のつもりで書かれた1行が、壊れたことを隠す蓋になっていたわけです。
エラーを出す数式より、エラーを出さない数式のほうが危ない。 今回いちばん腹に落ちたのはここでした。エラーなら気づけます。空欄は気づけません。前年の数字なんて、普段は誰も見ないからです。
どう直したか
手順はこうしました。
修正前の全数値を書き出す(あとで突合するため)
値と数式を同時に置換する。 置換ツールの「数式も対象にする」設定を必ず入れる
修正後の全数値をもう一度書き出す
1と3を機械で突合して、差分ゼロを確認する
このうち2が本丸です。数式を対象から外すと、見出しだけ変わって集計が壊れます。私が最初にやった失敗そのものです。
そして4を省いてはいけない理由が、実際に出ました。
置換ツールが「41か所を変更しました」と返してきたのに、実際に変わっていたのは49か所でした。ツールの件数報告が少なく出た。
もし件数だけ見て「41か所ね」と納得していたら、8か所の変更に気づかないまま進んでいました。道具が返す件数は結果ではありません。結果は、前後を突き合わせて自分で確かめるものです。

最終的に、値49か所・数式13か所の合計62か所を同時に置換し、全数値の突合で差分ゼロを確認しました。
同じ型の爆弾がもう1つあった
ついでに見つかったものを書いておきます。こちらのほうが金額としては重い話でした。
新しい拠点を開くとき、開店の直前の月だけ、その拠点の仕入がどこにも集計されていませんでした。
理由は同じ構造です。台帳には入力されている。でも集計表にその拠点の列がまだ無い。だから条件に一致せず、どこにも足されない。消えたのではなく、最初から数えられていなかった。
これも1円もエラーが出ません。合計は合計として、それらしい数字を返し続けます。
過去にさかのぼって調べたら、同じ型の抜けが7件ありました。3回の開店すべてで再現しています。個別のミスではなく、手順の穴でした。
見つけられたのは、縦と横で二重に足し算する検算行を1本足していたからです。
全体の合計 = 各拠点の合計 + 拠点に属さないぶん
会社全体 = 主力事業の合計 + それ以外の事業
この2本が1円でも合わなければ、どこかが壊れている。逆に言えば、この行が無い表は、壊れても音が鳴りません。

持ち帰れる形にすると
同じ規模の会社なら、同じものが埋まっていると思います。
文字列を条件にしている集計式を、一度洗い出す。 「この見出しを直したら何が壊れるか」を先に把握する
「見つからなければ空」で包むのをやめる。 空ではなく、はっきり「該当なし」と出す。エラーは敵ではなく、唯一の通知手段です
表記ゆれを見た目の問題だと思わない。 集計の条件になっていることがあります
置換は値と数式を同時に。 片方だけは、壊しにいく操作です
道具が返す件数を信用しない。 前後のスナップショットを機械で突合する
検算行を1本置く。 縦横で足し算が合うかを毎回見る。これが無いと、静かな故障は永久に見つかりません
AIに集計を任せるかどうか以前の話として、エラーを出さずに0や空を返す仕組みは、そこにあるだけで負債です。
そしてAIは、この手の表を「読める形になっている」と判断します。空欄を見ても、空欄としか思いません。壊れていることに気づけるのは、検算を仕込んだ人間だけです。
直すのは数式ではなく、壊れたときに音が鳴るようにすること。今回の教訓はそれに尽きます。
――
エラーが出ないまま壊れていた話は、ほかにも書いています。
Googleサイトの社内ポータルをAIに直させたら、本文が1セクション消えた
同じくらいの規模の会社でAIを使う方へ。続きはフォローで届きます。
