『SUMの計算式』(まさる)
エクセル表 A B C D 1 1 1 1 2 1 1 1 0
計算式 A2=SUM(A1) B2=SUM(B1) C2=SUM(C1) D2=SUM(D1)
この時 C1のセルをコピーでD1に貼付けすると 問題ないのですが、 C1のセルを切取っててD1に貼付けすると #REF になってしまいます。 これを防ぐ方法はありますか?
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
質問とは直接は関係ないですが。 単一のセルに対してなぜSUMを使うのでしょう? (OK) 2026/04/22(水) 11:33:24
A2=SUM(INDIRECT("A1"))
とすればいいみたいですね。
(まさる) 2026/04/22(水) 11:34:36
(OK)さん ありがとうございます。
もともとは数行ありました。 全てを書くと大量になるので 端折っています。 もともとは以下のようなデータです。 列を10個ずつ区切って集計を 1列ごとに変化を見るようなデータです。 この方がわかりやすかったでしょうか
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
10 10 10 10 10 10 10 10 5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
20 20 20 20 20 20 20 20 10
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
30 30 30 30 30 30 30 30 15
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
40 40 40 40 40 30 30 30 15
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 40 40 40 40 40 40 40 40 20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 50 50 50 40 40 40 40 40 20
(まさる) 2026/04/22(水) 11:43:22
(?????) 2026/04/22(水) 12:07:28
たとえば
=SUM(INDEX(1:1,COLUMN())) =SUM(INDEX(1:1048576,ROW()-1,COLUMN()))
の様な感じで表してやれば、 自身のセルからの相対的な位置関係で式が書けるので編集上都合が良いと思います。
(白茶) 2026/04/22(水) 14:22:33
┌─┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐ │ │ A│ B│ C│ D│ E│ F│ G│ H│ I│ J│ K│ L│ M│ N│ O│ ├─┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤ │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ │ │ │ │ │ │ │ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │ 2│=SUM(A1:E1)→5 │=SUM(F1:J1)→3 │=SUM(K1:O1)→0 │ ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ │ 3│ 1│ 1│ 1│ │ │ 1│ │ 1│ │ │ │ 1│ 1│ 1│ │ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │ 4│=SUM(A1:E1,A3:E3)→8 │=SUM(F1:J1,F3:J3)→5 │=SUM(K1:O1,K3:O3)→3 │ ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ : : : : : : : : : : : : : : : : : <<以下続く>>
F1:J1 をK1O1 に移動すると以下のようになります。 ┌─┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐ │ │ A│ B│ C│ D│ E│ F│ G│ H│ I│ J│ K│ L│ M│ N│ O│ ├─┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤ │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ │ │ │ │ │ │ │ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │ 2│=SUM(A1:E1)→5 │=SUM(K1:O1)→3 │=SUM(#REF!)→#REF! │ ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ │ 3│ 1│ 1│ 1│ │ │ 1│ │ 1│ │ │ │ 1│ 1│ 1│ │ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │ 4│=SUM(A1:E1,A3:E3)→8 │=SUM(F1:J1,F3:J3)→5 │=SUM(#REF!,K3:O3)→#REF! │ ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ : : : : : : : : : : : : : : : : :
以下のセルの計算式が以下のように書き変わってしまいます。
もちろん SUM(F1:J1) をSUM($F$1:$J$1)にしても同じようになります。
F2・・・SUM(F1:J1)=3→SUM(K1:O1)=3 F4・・・SUM(F1:J1,F3:J3)→SUM(F1:J1,F3:J3) K2・・・SUM(K1:O1)→SUM(#REF!) K4・・・SUM(K1:O1,K3:O3)→SUM(#REF!,K3:O3)
このような場合セルを移動しても計算式(SUM)の集計範囲が壊れないようにするにはどうすればいいのでしょうか
(まさる) 2026/04/23(木) 09:10:05
1.A2セルに =SUBTOTAL(9,INDEX(A:A,1):INDEX(E:E,ROW()-1)) と入力。
2.A2セルをコピーして、他のすべての数式セルに貼り付ける。
(半平太) 2026/04/23(木) 10:14:18
原因がエクセルの便利機能だから同じ解決方法なんだけど
別の質問?それとも最初の質問をわかりやすいと思われる方法で 書き直しているだけ?
移動っていうのは選択してドラッグであってる?
エクセルの便利機能が働くのは範囲内すべてに適応できる操作があったとき? だったと思うから
=sum(F1:J2 1:1) とか 操作する範囲 > セル範囲の指定 ってすればいい take index 公差範囲? とかなんかいろいろ使って余計に指定→範囲狭めるってやれば動かなくなる ※修正 (ちくわ) 2026/04/23(木) 10:16:14
(半平太)さんありがとうございます。 縦に作業が1つの場合はこの方法でできました。 縦に作業が1つ以上の場合はどうすればいいですか いろいろ試してみたのですが、循環参照エラーになったり、#REF!が出たりします。
┌─┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐ │ │ A│ B│ C│ D│ E│ F│ G│ H│ I│ J│ K│ L│ M│ N│ O│ ├─┼──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┤ │ 1│ 作業1 │ ├─┼──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ │ 2│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ │ │ │ │ │ │ │ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │ 3│ 5 │ 3 │ 0 │←合計値 ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ │ 4│ 1│ 1│ 1│ │ │ 1│ │ 1│ │ │ │ 1│ 1│ 1│ │ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │ 5│ 8 │ 5 │ 3 │←合計値 ├─┼──────────────┴──────────────┴──────────────┤ │ 6│ 作業2 │ ├─┼──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ │ 7│ 1│ │ 1│ │ │ │ │ 1│ │ │ │ │ 1│ 1│ │ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │ 8│ 2 │ 1 │ 2 │←合計値 ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ │ 9│ 1│ │ 1│ 1│ 1│ 1│ │ 1│ │ │ 1│ 1│ 1│ 1│ 1│ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │10│ 6 │ 3 │ 7 │←合計値 ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ │11│ │ │ │ │ 1│ │ │ │ 1│ 1│ 1│ │ 1│ 1│ │ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │12│ 7 │ 5 │ 10 │←合計値 ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ : : : : : : : : : : : : : : : : : (まさる) 2026/04/23(木) 11:42:01
(?????) 2026/04/23(木) 12:03:53
作業1では、 3行目は、2行目の合計 5行目は、3行目と4行目の合計
作業1では、 8行目は、 7行目の合計 10行目は、8行目と9行目の合計 12行目は、10行目と11行目の合計
半平太さん式を借りると 作業毎に、 最初の行ではすぐ上の1行分の合計 → =SUBTOTAL(9,INDEX(A:A,ROW()-1):INDEX(E:E,ROW()-1)) それ以降は、すぐ上の2行分の合計 → =SUBTOTAL(9,INDEX(A:A,ROW()-2):INDEX(E:E,ROW()-1)) かな? (´・ω・`) 2026/04/23(木) 12:43:46
「作業1」とか「作業2」とか、何らかの文字列が行区切りとして、A列に入力されているなら
1.A3セルに
=LET(ra,$A:$A,rw,MATCH("ーー",INDEX(ra,1):INDEX(ra,ROW()-1))+1,SUBTOTAL(9,INDEX(A:A,rw):INDEX(E:E,ROW()-1)))
と入力。
2.A3セルをコピーして、他のすべての数式セルに貼り付ける。
(半平太) 2026/04/23(木) 12:45:50
(?????)さんへ >これは試したの。 試しました。その結果以下のように作業2の結果が 作業1の分も作業2の分も合計されてしまうようになりました。
│ 5│ 8 │ 5 │ 3 │←合計値 ├─┼──────────────┴──────────────┴──────────────┤ │ 6│ 作業2 │ ├─┼──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ │ 7│ 1│ │ 1│ │ │ │ │ 1│ │ │ │ │ 1│ 1│ │ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │ 8│ 10 │ 6 │ 5 │←合計値 ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ │ 9│ 1│ │ 1│ 1│ 1│ 1│ │ 1│ │ │ 1│ 1│ 1│ 1│ 1│ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │10│ 14 │ 8 │ 10 │←合計値 ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ │11│ │ │ │ │ 1│ │ │ │ 1│ 1│ 1│ │ 1│ 1│ │ ├─┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┼──┴──┴──┴──┴──┤ │12│ 15 │ 10 │ 13 │←合計値 ├─┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┼──┬──┬──┬──┬──┤ (まさる) 2026/04/23(木) 12:49:56
(´・ω・`)さん解説ありがとうございます。
そうかぁ、合計したい対象の数字を毎回計算しなくてもよかったんですね。 1つ前の対象と、すでにそれまでの合計は出ているんだから それを足せばいいんですよね。 でも、それってA5より先にA3が計算されていなければならないんだけど そこはエクセルが理解してくれているんですね。 上下逆の表でもうまくできるのかな?と考えてしまいます。
(半平太)さん、本当にありがとうございます。
>=LET(ra,$A:$A,rw,MATCH("ー ー",INDEX(ra,1):INDEX(ra,ROW()-1))+1,SUBTOTAL(9,INDEX(A:A,rw):INDEX(E:E,ROW()-1)))
現状では、呪文にしか見えませんがひとつひとつ関数なりを調べて 理解できるようになりたいと思います。
また、何かわからないことがあれば質問させていただきます。 (まさる) 2026/04/23(木) 13:05:56
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.