これで何ができるか

集計表を327行・367行に増やしても、今回の実測では多くの数式が崩れませんでした。ただし、どの方式を選んだかで崩れ方がはっきり分かれました。

  • SUMIFS方式(ラベルの文字列で絞り込む)を選んだ7回・569か所——すべて正しい値に届きました
  • SUBTOTAL方式(位置で範囲を切る)——SUBTOTAL方式を選んだ3回は、47か所・67か所のうち必ず1か所だけ崩れました
  • 崩れた場所はいつも同じでした——直前の塊の個数が他と違う階層(地域ブロック大計・事業部大計)の2つ目
  • さらに、長い表(部門別経費表・367行)では、行番号を自分で探さず違う数字で示す回が5回中3回ありました。表には行番号をそのまま明記して渡していたのに、です
集計表を327行・367行に増やしても数式が正しい値に届くかを示した表。すべて「正解した箇所数/集計欄の総数」で、多いほど良い。店舗売上表でSUMIFS方式を選んだ回は47か所すべて正解を4回繰り返して188/188、SUBTOTAL方式を選んだ回は47か所中46か所の正解(1回)、部門経費表でSUMIFS方式を選んだ回は67か所すべて正解を3回繰り返して201/201、SUBTOTAL方式を選んだ回は67か所中132か所の正解(2回・134か所中)。下の枠には、SUMIFS方式は合計7回・569か所すべてで正しい値に届いたこと、SUBTOTAL方式は3回とも必ず1か所だけ外したこと、外れたのは毎回、直前の塊の個数が他と違う階層(地域ブロック大計・事業部大計)の2つ目だったことが書かれている。
方式で結果が分かれた。SUMIFS系は満点、SUBTOTAL系は毎回1か所だけ外した。

この記事は集計表が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」のずれでした。表には行番号をそのまま明記して渡していたので、本来は読み取るだけで済むはずです。

店舗売上表(327行)と部門経費表(367行)で、AIが示した集計行の行番号が実際の行と一致したかを示す表。店舗売上表は5回中5回が一致、部門経費表は5回中2回しか一致しなかった。下の枠には、外れた3回は担当者小計・部署中計・事業部大計の3階層すべてで同じ+3のずれだったこと、例えば7行目を10行目と書いたこと、数式の組み方とは無関係でSUMIFS方式の回にだけ起きたことが書かれている。
行番号は表に書いてあるのに、長いほうの表では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 に全文置いてあります。