これで何ができるか
表計算の集計表を作る仕事は、副業の発注区分としてちゃんと存在します。問題は、納品したあとも表が動き続けることです。作った月は合っていても、翌月に行が増えたところで静かにずれ始めます。
この記事は、AIに書かせた数式が「いま合っている」だけなのか、「あとで壊れない」のかを、自分で見分けるための頼み方です。
架空の売上表を2本作り(きれいな30行と、列の形を変えて空欄と表記ゆれを混ぜた30行)、同じことを4通りの頼み方で 16回 通しました。1行足したあとの正しい答えは、走らせる前に Python で確定させています。
結果を先に書きます。そのまま「担当ごとの売上合計を出す数式を書いてください」と頼んだ4回は、4回とも参照範囲が渡した表の最終行で止まっていました($B$2:$B$31 の形)。渡した30行では、3人ぶんとも真値と1円まで一致します。ところが31行目を足すと、その行はどこにも足されません。
16回それぞれから「最後にこれを使ってくださいと勧められた数式」を1本ずつ拾うと、16本のうち6本が、1行足したところで真値と合わなくなりました。
⚠️ この記事はVBA・マクロを書かせる話ではありません。扱うのは関数だけです(発注区分そのものが「VBAやマクロ構築は含まない」と書いています)。
前提
プログラミングは要りません。打つのは表計算ソフトのセルに入れる数式だけです。
- 表計算ソフト(Excel または Google スプレッドシート)
- AIとの会話(無料の範囲で足ります)
- 架空でよいので、30行くらいの表
⚠️ 納品先の実データを、そのままAIに貼らないでください。取引先名も金額も入っています。数式の形を決めるだけなら、架空の10行で十分です。渡す範囲の決め方はAIに「ついでに整理しておきました」と言わせないための頼み方にまとめてあります。
📌 どちらの表計算ソフトで試したかを、納品時に書いてください。使える関数が違います。この記事の実測は Excel の書き方で通しています。優劣の話はしません。
📌 発注元のAI利用のルールに従ってください。AIを使ってよいかは案件ごとに違います。
AIへの頼み方
1. まず、そのまま頼んでみる(4回とも同じ形になった)
返ってきたのは =SUMIF($B$2:$B$31, H2, $F$2:$F$31) の形です。材料2本×各2回=4回とも、SUMIF 12本すべてが同じ形でした。
計算そのものは正しいです。3人の合計は 302,500 / 269,500 / 265,500 で、記録から出した真値と一致します。返り自身が =SUM($F$2:$F$31) の検算まで付けてきて、それも合っています。
合っているので、このまま納品できてしまいます。
2. 「毎月行が増えます」と前提だけ伝える(4回中2回しか直らない)
これで直る回と、直らない回に割れました。4回のうち2回は $B:$B の列ごと指定に変わります。残る2回は $B$2:$B$31 のままで、代わりにこう書き添えてきます。
毎月行が増えるとのことなので、行を足したら $B$2:$B$31 と $F$2:$F$31 の「31」を、増えたあとの最終行の番号に書き換えてください。
⚠️ ここは書く前の見立てが外れたところです。「行が増えても大丈夫です」と書きながら範囲が固定、という食い違いを数えるつもりでしたが、16回で0件でした。範囲を固定にした回は、前提を伝えた版では2回とも自分から「書き換えてください」と断っています。AIは嘘をついていません。書き換えを毎月やるのは自分だ、というだけです。
3. 「直さなくていい形に」まで言う(4回とも直った)
4回とも固定の範囲は消えました(列ぜんぶ10本・テーブル参照3本)。返ってくる形は2通りです。
=SUMIF($B:$B, H2, $F:$F)= 列を丸ごと見る=SUMIF(テーブル1[担当], H2, テーブル1[金額])= 表を Ctrl+T でテーブルにしてから参照する
どちらも、行を足したときに数式を直す必要がありません。⚠️ ただし集計表をデータの下に置かないことと、金額の列に「合計」の行を作らないことが条件になります(作ると、その合計まで二重に足されます)。4回とも、この2つを自分から注意してきました。
4. 範囲の説明を分けて書かせる(決められないものが出てくる)
こちらも4回とも、最後に勧められた数式は列ごと指定でした。3番との違いは、㋒の欄と〔範囲が決まらない〕の欄に何が落ちるかにあります。
🔑 ㋒の欄が、範囲が固定のときに自分で警告になります。4回のうち2回は、㋑の書き出しに $B$2:$B$31 の固定の形を置いています。ところが直後の㋒に「入りません。31行目で切ってあるので、32行目に足した行は集計されません」と書き、そのまま自分で列ごと指定に直しました。書く欄を作っただけで、書いた本人が引っかかります。
そして〔範囲が決まらない〕の欄に、こちらが決めるべきことが並びます。4回で出たのは、担当が増えたときの名前の一覧、月ごとに分けたいのか通算でよいのか、取消・返品の行が来たときの扱い、金額欄が空の行の意味——どれも表の中には書いていないことです。
📌 表記ゆれと空欄も、ここで数字ごと出てきます。列の形を変えたほうの表(担当者名に空白ありなしが混ざり、金額欄が3行空いている)では、〔範囲が決まらない〕にこう並びました。
文字列そのままで4人として集計:92,000 / 91,000 / 123,000 / 100,000 空白を取り除いて2人として集計:183,000 / 223,000
同じ表から、2通りの答えが出ます。どちらが正しいかは表の外にしかありません。
5. 納品前に、1行足して答えが変わるか見る(4回とも見抜いた)
これがこの記事の要点です。数式が壊れているかどうかは、1行足せば分かります。
固定の範囲を持った数式を渡して、材料2本×各2回=4回通しました。4回とも「変わりません」と答え、4回とも理由に範囲を挙げ、4回ともその表の正しい合計(305,500 と 245,000)を書きました。
3人とも変わりません。理由は数式の範囲です。(中略)31行目までしか見ていません。足した行は32行目なので、範囲の外です。佐藤さんの 36,000 円は、どこにも足されません。
🔑 「数字が変わらない担当がいたら、その理由も書いてください」の一文が効いています。「この数式は大丈夫ですか」と聞くのではなく、変わらなかったこと自体を説明させると、範囲の話が出てきます。
🚨 検算が効きません。返りが付けてくる =SUM($F$2:$F$31) は、集計と同じ範囲です。だから足した行は合計にも入らず、内訳と合計はきれいに一致します。「合計と内訳が合っているから大丈夫」は、この壊れ方に対しては何の保証にもなりません。
6. 毎月そのまま貼れる形にする(形は揃うが、検査は削れる)
材料2本×各2回=4回。4回とも4行ちょうどで返り、判定も4回とも正しく出ました(行を足していない表では「合っています」、足したあとの表では「⚠️ 範囲が足りません」)。
🚨 その代わり、4回とも表記ゆれにも空欄にも一言も触れませんでした。会話の形で返させた8回(列の形を変えた表)では、7回が表記ゆれを、6回が金額欄の空欄を名指ししています。短く形を決めると、形の外にあった検査ごと落ちます。
📌 数式のほうも2回で割れました。「⚠️ 範囲が足りません」と正しく判定した2回が返した数式は、片方が $D$2:$D$32(また固定)、もう片方が $D:$D(列ぜんぶ)です。判定は同じでも、渡してくる直し方が違います。
うまくいかないときの言い直し方
数式は「行が増えても大丈夫」なのに、書いてある数字が違う
3番の頼み方の1回で、これが出ました。数式は =SUMIF($D:$D, I2, $G:$G) で、行が増えても壊れません。ところが同じ返りに書いてある数字は 183,000 / 223,000 で、その数式を実際に当てると 91,000 / 100,000 です(担当者名の表記ゆれをまとめていないため)。
さらに「=SUM($G:$G) は 406,000 で、上の2つの合計と一致します」という検算まで付いていました。183,000 + 223,000 は確かに 406,000 ですが、数式が返す 91,000 + 100,000 は 191,000 です。
🚨 この回だけ、表記ゆれにも空欄にも一言も触れていません。8回のうち、両方に触れなかったのはこの1回だけです。未来の壊れ方を頼んだ回に、いまの壊れ方が落ちた形になっています。
→ 数字は、数式に入れて確かめてください。AIが書いた数字と、AIが書いた数式が返す数字は、別物として扱います。表の中の値そのものを点検する型は数字の表を人に出す前に、AIに「おかしい数字」を先に見つけさせるにあります。あちらはいま間違っている数字、こちらはいま合っていて、あとで壊れる仕掛けです。
「毎月増えます」と伝えたのに、範囲が固定のままだった
これは失敗ではありません。4回中2回は固定のままですが、2回とも「31を最終行の番号に書き換えてください」と添えてあります。読み飛ばすと、毎月の書き換えを引き受けたことになります。
→ 前提を伝えるだけでなく、要望まで書いてください。3番の一文(行が増えても直さなくていい形にしてください)を足すと、4回とも固定は消えました。
数式は正しいのに、集計の数字が合わない
列の形を変えた表では、そのまま頼んだ2回とも担当者名の表記ゆれを自分から指摘しました。「高橋 みどり」と「高橋みどり」は、SUMIF では別人です。
→ 表の外にある決めごとを、先に自分で決めてください。金額欄が空なのは入力漏れなのか無償対応なのか——ここだけで、同じ「高橋みどり」1人ぶんの合計が 183,000 と 228,000 に分かれます(45,000円の差。空欄を0として足すか、単価×数量で埋めるかの違いです)。正式な表記をどちらにまとめるかは別の決めごとで、こちらは4番の実測(92,000〜123,000側の数字)に効きます。
→ 決めきれないものは、4番の〔範囲が決まらない〕の欄に残させます。列の形を変えた表に4番を当てた2回とも、担当ごとの合計を1つも断定せず、2通りの値を並べて置きました。
表計算ソフトが違うと使えない関数がある
UNIQUE や FILTER は新しい Excel と Google スプレッドシートの機能です。古い Excel では使えません。
→ 頼むときに、どのソフトの何年版かを書いてください。書かないと、動く前提で返ってきます。
応用・次の一手
📌 1行足す検算を、案件ごとに同じ形で回してください。5番の指示文は、材料が変わってもそのまま使えます。納品前に1回、足す行を変えてもう1回。
🔁 毎月やるなら、時刻を決めて自動にする形へ上げられます。6番の4行の様式は、そのまま自動実行に載る形です。⚠️ ただし6番で出たとおり、短くすると検査ごと落ちます。自動にするなら、4番の〔範囲が決まらない〕の欄を様式の中に残してください。置き方は「毎日決まった時刻に自動でやっておいて」をAIに作らせるにあります。
📌 自分の作業時間のほうを集計する話は、別の記事です。副業の時給をAIに出させると、計算は合うのに「線引き」だけが書かれないは、自分の記録を自分で集計する話でした。こちらは他人に納品する表で、AIがいない場所で動き続けるものを渡します。
📌 同じ晩に測った近い記事が2本あります。契約額から手取りを出す話は副業の手取りを契約額から出すに、提案文どうしの被りを測る話は案件の提案文を下書きまで作るにあります。どちらも「書かれていないものをAIが埋める」族ですが、この記事はいま合っていて、あとで壊れるという時間軸のほうを扱っています。
⚠️ この記事の数字はすべて架空データでの実測です(全24回=16回+検算4回+保存版4回)。生の返りと照合に使ったコードは docs/evidence/formula-that-survives-new-rows.md に全文置いてあります。