これで何ができるか
集計表を327行・367行に増やしても、今回の実測では多くの数式が崩れませんでした。ただし、どの方式を選んだかで崩れ方がはっきり分かれました。
- SUMIFS方式(ラベルの文字列で絞り込む)を選んだ7回・569か所——すべて正しい値に届きました
- SUBTOTAL方式(位置で範囲を切る)——SUBTOTAL方式を選んだ3回は、47か所・67か所のうち必ず1か所だけ崩れました
- 崩れた場所はいつも同じでした——直前の塊の個数が他と違う階層(地域ブロック大計・事業部大計)の2つ目
- さらに、長い表(部門別経費表・367行)では、行番号を自分で探さず違う数字で示す回が5回中3回ありました。表には行番号をそのまま明記して渡していたのに、です
この記事は集計表が4段でも小計欄は崩れないの続きです。あちらは本文の最後で「材料はいずれも18明細・30行程度の小さな表(数百行規模の実データは試していません)」と、自ら宿題を残して終わっていました。その数百行を実際に作って試したのが今回です。
「SUBTOTAL方式は必ず崩れる」という意味ではありません。試したのは架空データの2種・合計10回の範囲です。崩れたのは「直前の塊の個数が不均等な階層」だけで、塊の個数がそろっている階層(店舗小計・担当者小計など)はSUBTOTAL方式でも崩れませんでした。
前提
| かかる時間 | 25分 |
| 費用 | 無料。無料のチャットAIで足ります |
| 必要なもの | 表計算ソフト(Excel または Google スプレッドシート)と、小計・中計・大計・総合計のように集計の階層が3段以上ある表 |
| プログラミング | 不要。この記事の指示文をコピーして貼るだけです |
納品先の実データを、そのままAIに貼らないでください。この記事の材料はすべて架空です。
AIへの頼み方
1. 店舗別売上表(40店・327行)で試す
架空の店舗別売上表を用意しました。既存記事の材料(地域ブロック→エリア→店舗の3階層・30行規模)と同じ不均等な構造を保ったまま、規模だけを増やしています。
- 東日本ブロック=関東エリアだけ/西日本ブロック=関西・中部・九州の3エリア(既存記事と同じ不均等さ)
- 各エリアの店舗数を10店、日数を7日に増やし、327行まで拡大
- 表には行番号をそのまま明記して渡した
5回のうち4回は、SUMIFSでラベルの文字列を手がかりに絞り込む方式でした。考え方はこうです。
- 店舗小計は「店舗名が同じ・区分が『売上』」の行だけをSUMIFSで合計する
- エリア中計は「エリア名が同じ・区分が『〜小計』で終わる」行だけを合計する
- 地域ブロック大計は「地域ブロック名が同じ・区分が『〜中計』で終わる」行だけを合計する
- 総合計は「区分が『〜大計』で終わる」行だけを合計する
この4つを、同じ区分の行すべてにコピーし直し、327行全体で再計算しました。47か所(店舗小計40・エリア中計4・地域ブロック大計2・総合計1)すべてが正しい値に届きました。4回とも、です。
残り1回はSUBTOTALの累積範囲でした。=SUBTOTAL(9,F2:F8)のように、その階層の最初の行から自分の1行上までを範囲にする形です。この回は同じ式を機械的にコピーし直すと、地域ブロック大計の2つ目(西日本大計)だけが崩れました。東日本ブロックはエリアが1つなのに対し、西日本ブロックは3つあるため、同じ範囲幅でコピーすると開始位置がずれてしまうからです。
2. 同じ指示文を部門別経費表(60人・367行)でも試す
材料を部門別経費表に替えました。事業部→部署→担当者の3階層で、フロント事業部には営業部だけ、バックオフィス事業部には総務部・人事部・経理部の3部署があります。担当者は各部署15人、費目は5種類で、367行まで広げています。
今回は5回のうち3回がSUMIFS方式、2回がSUBTOTALの累積範囲でした。SUMIFS方式の3回は、同じ区分の全セルにコピーし直し、367行全体で再計算しました。67か所(担当者小計60・部署中計4・事業部大計2・総合計1)すべてが正しい値に届きました。
SUBTOTAL方式の2回は、2回とも事業部大計の2つ目(バックオフィス事業部大計)だけが崩れました。店舗別売上表の地域ブロック大計とまったく同じ構造です。フロント事業部は部署が1つ、バックオフィス事業部は3つという不均等さが、同じ崩れ方を再現しました。興味深いのは、SUBTOTAL方式のこの2回は、AIが自分から「大計は配下の部署数が事業部によって違うので、この2つだけは個別入力になります(コピーでは揃いません)」と注意していたことです。注意していたにもかかわらず、その式を機械的にコピーすればちゃんと崩れる、という結果でした。
なぜSUBTOTAL方式だけ崩れるのか
SUMIFS方式は「名前が一致するか」「区分の文字列がパターンに合うか」という条件で集計対象を決めます。条件に合う行がどこにあっても、何個あっても、同じ式で正しく拾えます。
SUBTOTAL方式は「どこからどこまで」という位置で集計対象を決めます。位置は塊の大きさに依存します。塊の大きさが揃っている階層(店舗小計・担当者小計など、どの店舗・どの担当者も同じ行数)ではコピーが効きます。ただし、塊の個数が違う階層(地域ブロック大計・事業部大計)では、同じ式を機械的にコピーした瞬間に崩れます。
うまくいかないときの言い直し方
行番号を違う数字で示されたとき
部門別経費表の5回のうち3回は、集計行の例を示すときに「10行目」「95行目」「96行目」のように、実際の行番号(7・92・93行目)とは違う数字を示しました。3回とも、3つの階層すべてで同じ「+3」のずれでした。表には行番号をそのまま明記して渡していたので、本来は読み取るだけで済むはずです。
1回試したところ、60件すべての行番号が実際と完全に一致しました。行番号を書き出させてから数式を書かせると、見た目の数字に頼らず表を読み直すよう仕向けられるようです。1回だけの結果ですが、数式を信じる前に「その行番号は合っていますか」と聞き直す価値はあります。
同じ言い直しを、行番号の誤記が0件だった店舗別売上表にも試しました(害がないかの確認です)。
こちらも47件すべての行番号が実際と一致しました。正しく読めている材料に対しても、この言い直しは悪さをしませんでした。
SUBTOTAL方式を使いたいとき
SUBTOTAL方式そのものが悪いわけではありません。塊の個数がそろっている階層ではこの記事でも崩れませんでした。崩れるのは「直前の塊の個数が、他の塊と違う階層」だけです。
部門別経費表で1回試したところ、実際に崩れる場所をそのまま言い当てました。「大計層だけ配下の部署数が事業部で違うので、固定の行オフセットのままコピーすると範囲がずれる」という答えです。聞かなくても自分から「個別入力になります」と注意していた2回(D3・D4)と同じ結論です。SUBTOTAL方式を使うなら、コピーする前に一度この質問を挟んでから検算することをお勧めします。
応用・次の一手
行を増やしたら、必ず一度は全部の集計欄を検算してください。特にSUBTOTAL方式を選ばれたときは、地域やブロックのように「個数が不均等になりうる単位」の大計に相当する階層を優先して確かめてください。
店舗別売上表で1回試したところ、「F列がまだ空欄なので今は判定できません」と正直に答えました。そのうえで、東日本(1エリア)と西日本(3エリア)が対称ではないという構造上の弱点を自分から指摘しました。確認の方法(数式表示への切替・参照範囲を目で見る・=ROWS()で範囲の行数を数字で突き合わせる、など)も具体的に返ってきました。返ってきた確認方法は、自分で1件は手計算して確かめてから使ってください。
AIが示す行番号や数字を鵜呑みにしない考え方は、AIに数字を「それっぽく」埋めさせないための頼み方にも共通する話です。集計の階層をさらに増やした場合(5段以上)や、500行を超える規模は今回は試していません。試すとすれば、SUBTOTAL方式が選ばれた回だけを対象に、不均等な階層を増やして再現するのが近道です。
⚠️ この結果は、この2種類の架空データ・合計10回+言い直しの確認1回の実測です。「SUMIFS方式なら何行でも必ず崩れない」と一般化しないでください。試したのは、次の範囲までです。
- 階層は4段まで(既存記事と同じ段数。5段以上は試していません)
- 行数は327行・367行の2点だけ(この間や、これを超える規模は補間していません)
- 不均等さは「1対3」の比率のみ(もっと極端な比率は試していません)
- 行番号の言い直しは部門別経費表で1回だけ(店舗別売上表では未検証です)
今回の生の返りと、判定に使ったPythonコードは docs/evidence/subtotal-still-correct-past-300-rows.md に全文置いてあります。