エクセルで行挿入をすると合計がずれるのは、SUM関数の範囲に、挿入した行が入っていないからです。表を「テーブル」に変換(Ctrl+T)すれば、行を挿入しても合計範囲は自動で広がり、ずれなくなります。テーブルにできない事情があるなら、①SUM範囲を1行広めに取る ②列全体を指定する ③SUBTOTAL ④OFFSET+COUNTA の4択です。この記事では、この5つの方法を「安全な順」に、コピペできる数式つきで解説します。
「明細行を追加したのに、合計金額が変わっていない」——見積書や在庫管理表を扱っていると、誰もが一度は冷や汗をかく現象です。しかもこれ、気づかないまま提出してしまうと、ビジネスでは信用に関わります。
でも安心してください。原因はあなたの実力不足ではありません。「SUM関数に、どこまで足すのかを教えていないだけ」です。設定を1回変えるだけで、二度と起きなくなります。所要時間は3分。今日から、行を追加するたびに数式を選び直す作業から解放されましょう。
なぜ行を挿入するとSUMがずれるのか(1分でわかる仕組み)
まずは仕組みだけ押さえます。ここが分かると、5つの方法のどれを選ぶべきかも自分で判断できるようになります。
SUM関数は「C2からC10まで足しなさい」という、場所の指定です。人間のように「この表の金額列ぜんぶ」とは考えてくれません。だから、指定した場所の外側に行が増えると、当然ながら無視されます。
パターン1:合計範囲の「外」に行を足している(いちばん多い)
数式が =SUM(C2:C10) のとき、11行目に明細を書き足しても、そこは範囲外です。合計は増えません。表の一番下に追記していく運用で、圧倒的に多いパターンです。
パターン2:合計行の「すぐ真上」に挿入した
Excelは気を利かせて範囲を広げてくれることがありますが、広げてくれないこともあります。表の作り方や、挿入の仕方(行全体の挿入か、セルの挿入か)で挙動が変わるためです。「たまたま上手くいった経験」があると、かえって危険です。
パターン3:数字に見えて、実は文字列だった
会計ソフトやWebからコピーしてきたデータでよく起きます。SUM関数は文字列を「0」として扱うので、行を足しても合計が1円も動きません。範囲を選んで画面右下(ステータスバー)の「数値の個数」を見れば、すぐ判定できます。
パターン4:フィルタで隠れているだけ
絞り込み中でも、通常のSUM関数は隠れている行も足します。「画面に見えている分だけ合計したい」なら、後述のSUBTOTALが必要です。
方法1:テーブルに変換する(3クリック・いちばん確実)
結論の方法です。迷ったらこれ一択でかまいません。
手順(3クリック)
- 合計したい表の中を、どこでもいいのでクリックします。
- キーボードで
Ctrlを押しながらTを押します。 - 「テーブルの作成」が出るので、「先頭行をテーブルの見出しとして使用する」にチェックしてOK。
これで、ただの「セルの羅列」が、Excelにとって「意味のあるデータのまとまり」になりました。表の一番下に1行書き足すと、テーブルの枠がスーッと自動で伸びます。この瞬間が気持ちいいので、ぜひ一度試してみてください。
合計は「構造化参照」で書く
テーブル化したら、合計セルにSUMを入れ直します。=SUM( と打って、金額の列をマウスでなぞってみてください。数式がこうなります。
=SUM(テーブル1[金額])
これが構造化参照です。「C2からC10」という場所の指定ではなく、「このテーブルの【金額】列すべて」という意味の指定に変わりました。行が10行増えようが1,000行増えようが、Excelが範囲を自動で広げます。
さらにラクな方法もあります。テーブル内のセルを選んで Ctrl+Shift+T を押すと、「集計行」が表の下に自動で追加されます。数式を1文字も打たずに合計が出せます(もう一度押すと消えます)。
つまずき対策:テーブル化したら見た目が変わってしまった
- 青いシマシマを消したい → 表を選択 →「テーブルデザイン」タブ → スタイル一覧の右下から「クリア」。機能はそのままで、見た目だけ元に戻ります。
- 結合セルがあって変換できない → テーブルは結合セルが苦手です。見出しの結合を解除してから変換してください。どうしても解除できない帳票なら、方法2〜5へ。
- 元に戻したい → 「テーブルデザイン」タブ →「範囲に変換」。構造化参照は通常の参照に置き換わります。
方法2:SUM範囲を1行広めに取る(いちばん手軽・ただしワナあり)
「テーブル化は会社のフォーマット上むずかしい」という現場向けの、いちばん素朴な手です。
=SUM(C2:C100)
明細が現在10行でも、あらかじめ100行目まで指定しておきます。空白セルは0として無視されるので、合計はズレません。
ここが最大のワナです。この方法で本当に効くのは、「合計行より上に、余白として空行が確保されている」ときだけです。合計行が11行目にあり、範囲が C2:C100 だと、合計行自身を含んでしまい循環参照エラーになります。
実務での正しい形は、こうです。
- 明細エリアを2行目〜100行目と決めておく(99行分の枠)。
- 合計行は、その下の101行目以降に置く。
- 行を追加するときは、必ず明細エリアの内側(100行目より上)に挿入する。
つまずき対策:明細が100行を超えると、静かに取りこぼします。上限を超えた瞬間に気づけるよう、どこかのセルに検算を仕込んでおくと安心です。
=IF(COUNTA(C101:C200)>0,"⚠ 範囲外にデータがあります","OK")
方法3:列全体を指定する(=SUM(C:C))
いちばんラクな書き方です。何行増えようが確実に拾います。
=SUM(C:C)
ただし、使える条件がはっきりしています。
- 合計セルは、必ずC列以外に置く(C列に置くと循環参照になります)。
- 同じC列に、別の表の数値や小計が混ざっていると全部足されます。1列=1種類のデータ、が鉄則です。
- 見出しの文字列は自動で無視されるので、そこは心配いりません。
向いている場面:1シートに表が1つだけ。上から下へ明細を足していくだけのシンプルな台帳。この条件を満たすなら、これがいちばんラクで壊れにくい選択です。
方法4:SUBTOTALで小計と総計を分ける
「フィルタで絞り込んだ分だけ合計したい」「小計行があるせいで総計が二重に足される」——この2つを一度に解決するのがSUBTOTALです。
=SUBTOTAL(9,C2:C100)
先頭の 9 が「合計しなさい」という意味の番号です。この関数には、他の関数にはない2つの特別なふるまいがあります。
- フィルタで隠れた行を、自動で除外する。絞り込んだ結果の合計がそのまま出ます。
- 範囲内にある別のSUBTOTALを、自動で無視する。だから、小計行をいくつ挟んでも総計が二重計算になりません。
この2つ目が本当に便利です。部門ごとの小計をSUBTOTALで書いておけば、総計も同じくSUBTOTALで範囲をまとめてなぞるだけ。小計を足し算し直す必要がありません。
手作業で「行を非表示」にした分も除きたいときは、番号を 109 に変えます。
=SUBTOTAL(109,C2:C100)
| 番号 | フィルタで隠れた行 | 手動で非表示にした行 |
|---|---|---|
9 |
除外する | 足してしまう |
109 |
除外する | 除外する |
つまずき対策:SUBTOTALを使っても、範囲そのものは C2:C100 という固定指定のままです。範囲の外に行を足せば、やはりずれます。方法1(テーブル化)や方法2(広めの範囲)と組み合わせて使うのがコツです。テーブル化していれば =SUBTOTAL(9,テーブル1[金額]) と書けて、範囲の心配も消えます。
方法5:OFFSET+COUNTAで範囲を自動可変にする
「テーブル化もできない、余白の行も置けない」という、いちばん制約が厳しい帳票向けの数式です。データが入っている行数を数えて、その分だけ範囲を伸ばします。
=SUM(OFFSET($C$2,0,0,COUNTA($C$2:$C$1000),1))
読み方はこうです。
COUNTA($C$2:$C$1000):C2から下に、空白でないセルが何個あるかを数える(=データの行数)。OFFSET($C$2,0,0,その行数,1):C2を起点に、その行数ぶん・1列ぶんの範囲をつくる。- その範囲をSUMで合計する。
行が増えればCOUNTAの数が増え、範囲が自動で伸びます。行を消せば縮みます。
つまずき対策が2つあります。
- 途中に空白行があると、その分だけ範囲が足りなくなります。COUNTAは「個数」を数えるだけで、「どこまで」は見ていないからです。空白行が入りうる表では使わないでください。
- OFFSETは「揮発性関数」です。シートのどこか1か所を書き換えるたびに再計算が走るため、多用するとファイルが重くなります。数十個までに留めるのが無難です。
【補足】INDIRECTは動きますが、いまは「最後の手段」です
以前この記事で紹介していた方法です。古いバージョンのExcelや、特殊なレイアウトでは今も現役です。
=SUM(INDIRECT("C2:C" & ROW()-1))
ROW()-1 で「合計セルの1つ上の行番号」を取り、"C2:C" とつなげた文字列を、INDIRECTが実際のセル参照に変換しています。合計セルの位置が下がれば、範囲も自動で追いかけます。
ただし、あえて正直にお伝えします。いま新しく作るなら、この方法は選ばないでください。理由は3つです。
- OFFSETと同じ揮発性関数で、ファイルが重くなります。
- 参照が文字列なので、行を挿入・削除しても数式が追従しません(”C2″の部分は文字列のままです)。
- 引き継いだ人が読み解けず、ファイルがブラックボックス化します。
テーブル機能が使える環境なら、方法1が上位互換です。
5つの方法の使い分け早見表
| 方法 | 数式 | むずかしさ | こんなときに |
|---|---|---|---|
| 1. テーブル化 | =SUM(テーブル1[金額]) |
★☆☆ | 迷ったらこれ。ほとんどの表で最適 |
| 2. 1行広めに取る | =SUM(C2:C100) |
★☆☆ | 今すぐ直したい。明細の上限が読める |
| 3. 列全体 | =SUM(C:C) |
★☆☆ | 1シートに表が1つだけの台帳 |
| 4. SUBTOTAL | =SUBTOTAL(9,C2:C100) |
★★☆ | フィルタを使う/小計行がある |
| 5. OFFSET+COUNTA | =SUM(OFFSET(...)) |
★★★ | テーブル化も余白も無理な帳票 |
上から順に試して、条件に合わなければ1つ下へ。それだけで大丈夫です。全部を覚える必要はまったくありません。あなたの表に合う1つを、今日決めてしまいましょう。
再発防止:印刷範囲の外に「検算セル」を1つ置く
仕組みを整えても、人間はミスをします。重要な見積書や請求書には、印刷されない場所に検算を仕込んでおくと、事故がゼロに近づきます。
=COUNT(C2:C1000)
数値が入っているセルの個数を数えます。「明細が15行あるのに、13としか出ない」——この瞬間に、文字列混入や入力漏れに気づけます。
=IF(ROUND(A1-B1,0)=0,"OK","⚠ 不一致")
明細合計(A1)と、品目別集計の合計(B1)を突き合わせる形です。2つの経路で出した数字が一致するかを見る、いちばん確実なチェックになります。
それでも数字が一致しないときのチェックリスト
範囲を直したのに、まだ数字が合わない。そんなときは、原因が「範囲」以外にあります。症状別に、詳しい解決記事へご案内します。
□ 範囲は正しいのに、金額がどうしても一致しない
原因の切り分け方を、7つのパターンで解説しています。まずはここから。

□ 数字なのに合計されない/左寄せで表示されている
「文字列として保存された数値」です。まとめて数値に直す方法をコピペで解説しています。

□ 全部ではなく「条件に合う分だけ」合計したい
SUMIF・SUMIFSの出番です。複数条件のパターンまで載せています。

□ 合計の前に、単価の取得で #N/A が出ている
VLOOKUPのエラーが混ざると、合計も当然おかしくなります。原因は7つに絞れます。

よくある質問
Q. テーブル化すると、共有相手のExcelでも動きますか?
A. 動きます。テーブル機能はExcel 2007から搭載されている標準機能です。相手が古いバージョンでも、構造化参照はそのまま計算されます。ただし、ファイルを .xls(旧形式)で保存し直すとテーブルが解除されることがあるので、.xlsx で保存してください。
Q. 行を「挿入」ではなく「コピーして貼り付け」した場合もずれますか?
A. テーブル化していれば大丈夫です。テーブルの最終行のすぐ下に貼り付ければ、範囲が自動で広がります。テーブル化していない表では、貼り付けた場所が範囲外ならやはり合計に入りません。
Q. 合計が「0」と表示されます。範囲は合っているはずなのに。
A. 数値が文字列として入っている可能性が高いです。セルが左寄せになっていないか、セルの左上に緑の三角マークが出ていないかを確認してください。直し方は上のチェックリストの2番目の記事にまとめています。
Q. 複数のシートの合計をまとめたいときは?
A. シート名を範囲で指定する「串刺し集計」が使えます。Sheet1からSheet5までの同じセルを足すなら、次のように書きます。
=SUM(Sheet1:Sheet5!C11)
シートを追加したときも、Sheet1とSheet5の間に挟めば自動で合計に加わります。シート単位でも「範囲を広めに取る」考え方が効く、というわけです。
Q. 数式を入れ直すのが怖いです。失敗したら戻せますか?
A. Ctrl+Z で戻せます。それでも不安なら、作業前にファイルを複製して「_練習用」と名前をつけ、そちらで試してください。これはプロも普通にやっている手順です。壊すのが怖い気持ちは、慎重さの証拠であって、弱点ではありません。
まとめ
行を追加しても合計がずれない設定は、この順番で選べば大丈夫です。
- まずテーブル化(
Ctrl+T)+構造化参照。3クリックで、根本から解決します。 - できないならSUM範囲を1行広めに、または列全体参照。
- フィルタや小計を使うならSUBTOTAL。
- どれも無理な帳票だけOFFSET+COUNTA。
- INDIRECTは、動きますが新規採用は見送りを。
そして、印刷範囲の外に検算セルを1つ。これで「提出してから気づく」事故は、ほぼ起きなくなります。
最後にひとつだけ。この設定は、あなただけを守るものではありません。同じファイルを触る誰かが行を足したときにも、静かに合計を守ってくれます。テーブル化しておくことは、次にこのファイルを開く人への「優しさ」なのです。
「Excelは苦手で」と思っていた方こそ、今日の Ctrl+T は効きます。3クリックで、あなたの表は「勝手に正しくなる表」に変わりました。小さな一歩ですが、これは確実にあなたの武器です。次に誰かが合計で困っていたら、そっと教えてあげてください。もう、あなたは「教えられる側」ではありません。
※本記事のテーブル機能・構造化参照・SUBTOTAL・OFFSET の各仕様は、Microsoft 公式サポート(Microsoft サポート「Excel ヘルプとラーニング」)に掲載された各関数・機能のリファレンスに基づいています(2026年8月時点、Microsoft 365 / Excel 2021 で動作確認)。


コメント