見出し画像

1文字直したら前年の集計が消えた。同じ見出しを見ている数式が3本あった

6拠点・スタッフ約70名の会社を経営しています。

資金繰りを1つのスプレッドシートで管理しています。タブは80枚以上。毎月の台帳から拠点ごとの数字を集計し、年ごとのサマリにまとめる作りです。

そこに、ずっと前から事業名の表記ゆれが残っていました。正しい表記に対して、漢字が1文字だけ違う。同じ事業なのに、書き方が2通り混ざっている状態です。

見た目が悪いだけだと思っていました。だから直しました。

結果、前年サマリの1行が、丸ごと空になりました。

直した瞬間、前年の1行が空になった

やったことは単純です。月次タブの見出しを、正しい表記に書き換えた。それだけです。

置換した直後、前年サマリを開いたら、その事業の行が空欄になっていました。

エラーは1つも出ていません。 #REF! も #N/A も無い。ただ、あるはずの数字が無い。

すぐ元に戻しました。戻したら数字は復活しました。つまり、私の置換が原因です。

ここで気づきました。見出しは、表示のためのラベルではなかった。 集計の条件そのものでした。

同じ見出しを見ている場所が3つあった

調べたら、その見出しの文字列を見ている場所が3か所ありました。

  1. 月次タブの集計式 … 台帳から金額を拾うとき、事業名を条件にしている

  2. 年次サマリの検索式 … 月次タブの1行目から、事業名を探して列位置を特定している

  3. 台帳の事業名の列 … 入力される値そのもの

厄介なのは1と2の書かれ方が違ったことです。

2は「正しい表記」を探しにいく。1は「省略した表記」を探しにいく。わざと違う文字列で書かれていました。 どちらも当時は動いていたので、誰も直さなかった。

つまり、この3か所は足並みを揃えて同時に直すしかない。1か所だけ直すと、他の2か所が対象を見失います。

そして見失ったとき、何が起きるか。

年次サマリの検索式は、外側が「見つからなければ空を返す」形で包まれていました。 該当なしをエラーにせず、静かに空にする。親切のつもりで書かれた1行が、壊れたことを隠す蓋になっていたわけです。

エラーを出す数式より、エラーを出さない数式のほうが危ない。 今回いちばん腹に落ちたのはここでした。エラーなら気づけます。空欄は気づけません。前年の数字なんて、普段は誰も見ないからです。

どう直したか

手順はこうしました。

  1. 修正前の全数値を書き出す(あとで突合するため)

  2. 値と数式を同時に置換する。 置換ツールの「数式も対象にする」設定を必ず入れる

  3. 修正後の全数値をもう一度書き出す

  4. 1と3を機械で突合して、差分ゼロを確認する

このうち2が本丸です。数式を対象から外すと、見出しだけ変わって集計が壊れます。私が最初にやった失敗そのものです。

そして4を省いてはいけない理由が、実際に出ました。

置換ツールが「41か所を変更しました」と返してきたのに、実際に変わっていたのは49か所でした。ツールの件数報告が少なく出た。

もし件数だけ見て「41か所ね」と納得していたら、8か所の変更に気づかないまま進んでいました。道具が返す件数は結果ではありません。結果は、前後を突き合わせて自分で確かめるものです。

最終的に、値49か所・数式13か所の合計62か所を同時に置換し、全数値の突合で差分ゼロを確認しました。

同じ型の爆弾がもう1つあった

ついでに見つかったものを書いておきます。こちらのほうが金額としては重い話でした。

新しい拠点を開くとき、開店の直前の月だけ、その拠点の仕入がどこにも集計されていませんでした。

理由は同じ構造です。台帳には入力されている。でも集計表にその拠点の列がまだ無い。だから条件に一致せず、どこにも足されない。消えたのではなく、最初から数えられていなかった。

これも1円もエラーが出ません。合計は合計として、それらしい数字を返し続けます。

過去にさかのぼって調べたら、同じ型の抜けが7件ありました。3回の開店すべてで再現しています。個別のミスではなく、手順の穴でした。

見つけられたのは、縦と横で二重に足し算する検算行を1本足していたからです。

  • 全体の合計 = 各拠点の合計 + 拠点に属さないぶん

  • 会社全体 = 主力事業の合計 + それ以外の事業

この2本が1円でも合わなければ、どこかが壊れている。逆に言えば、この行が無い表は、壊れても音が鳴りません。

持ち帰れる形にすると

同じ規模の会社なら、同じものが埋まっていると思います。

  • 文字列を条件にしている集計式を、一度洗い出す。 「この見出しを直したら何が壊れるか」を先に把握する

  • 「見つからなければ空」で包むのをやめる。 空ではなく、はっきり「該当なし」と出す。エラーは敵ではなく、唯一の通知手段です

  • 表記ゆれを見た目の問題だと思わない。 集計の条件になっていることがあります

  • 置換は値と数式を同時に。 片方だけは、壊しにいく操作です

  • 道具が返す件数を信用しない。 前後のスナップショットを機械で突合する

  • 検算行を1本置く。 縦横で足し算が合うかを毎回見る。これが無いと、静かな故障は永久に見つかりません

AIに集計を任せるかどうか以前の話として、エラーを出さずに0や空を返す仕組みは、そこにあるだけで負債です。

そしてAIは、この手の表を「読める形になっている」と判断します。空欄を見ても、空欄としか思いません。壊れていることに気づけるのは、検算を仕込んだ人間だけです。

直すのは数式ではなく、壊れたときに音が鳴るようにすること。今回の教訓はそれに尽きます。

――

エラーが出ないまま壊れていた話は、ほかにも書いています。

AIに人を数えさせたら、1人が2人になっていた

Googleサイトの社内ポータルをAIに直させたら、本文が1セクション消えた

同じくらいの規模の会社でAIを使う方へ。続きはフォローで届きます。

いいなと思ったら応援しよう!