Excelでは、現在のセルの上にあるすべての数値を合計するにはどうすればよいですか?


31

ヘッダーと一連の数字で構成されるExcelの列を作成し、それらの数字の合計を下部に配置する必要があります。合計の上に新しい数値を挿入するように合計を調整したいと思います。このようなもの:

Numbers
 1
 2
 5
10

18        Total

後でリストの中央に10個の新しい数字を挿入する場合、合計に自動的にそれらが含まれるようにします。

私はSUM()関数が列全体を合計できることを知っていますが、合計がその列にもある場合、循環参照について文句を言います。合計の上に数字を合計するにはどうすればよいですか?

回答:


51

関数ROW()COLUMN()は、現在のセルの行と列を提供します。ADDRESS()関数でこれらを使用して、現在の列の最上部から合計の上の行までの範囲を表す文字列を作成します。次に、INDIRECT()関数を使用して、その文字列を実際の範囲に変換してSUM()関数に渡します。合計セルの式は次のようになります。

=SUM(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))

スプレッドシートの任意のセルに入力すると、そのセルの上の列にあるすべての数値の合計が生成されます。


1
@ user370646実際、Excel 2010で追加されたさまざまなセルで複数の異なるタイプの数式を使用してテストしましたが、正常に機能しました。(追加するセルに、合計でセルを参照する数式が含まれている場合、循環参照エラーで失敗します。)具体的な例はありますか?
マークメーアー14

1
+1百万回。これは、合計関数の範囲-DON'T-が自動的に更新されるGoogleスプレッドシートで機能します。どうもありがとうございます。
seekerOfKnowledge

1
Googleスプレッドシートでテストしたところ、機能の組み合わせは完全に機能しています。

1
この答えは私の命を救った!
kRazzy R

1
LibreOffice Calcでも動作するようです。
デジャン

6

実際には、プレーンでやりたいことができます =SUM()

Excelシートのデザインは次のとおりです。

\|  A  |  B  |
-+-----+-----+
1|  1  |     |
2|  2  |     |
3|  3  |     |
4|  4  |     |
5|  5  |     |
6|     |     |
7|  15 |Total|

AssumngはA7ある=SUM(A1:A5)Excelが拡大するとして、あなたが、あなたのように多くの行をしてください追加することができ、=SUMそれに応じての範囲を。

行2、3、および4を選択し、行を挿入するとします。結果は次のようになります。

 \|  A  |  B  |
--+-----+-----+
 1|  1  |     |
 2|     |     |
 3|     |     |
 4|     |     |
 5|  2  |     |
 6|  3  |     |
 7|  4  |     |
 8|  5  |     |
 9|     |     |
10|  15 |Total|

A10等しい=SUM(A1:A8)。そのため、新しい番号を自由に挿入できるようになりました。


1
あなたはそれを綴ったので、私はこの動作を知っていました。しかし、何らかの理由で、現在のセルのすぐ上から常に合計する数式を作成するのが便利だと考えていました。しかし、単純な合計範囲を作成することは、私が思いついた複雑な数式よりも明らかに簡単です。私は半分も賢すぎました。ありがとう!(少なくとも、以前は使用したことがなかった
間接

2
私は1年後に賛成を得続け、質問で尋ねた仕事をし、明らかにこの答えはないGoogleスプレッドシートで働いているので、私は投稿したものに受け入れられた答えを変更しました。しかし、@ Doktoro、あなたの答えは非常に有用な洞察を提供し、私はそれに感謝しています。
マークメーアー

1
欠点があります:最後に(空の行の前に)行を挿入します。少なくともLibreOfficeでは、SUM式は元の範囲のままになります。つまり、新しい行は省略されます。私の解決策:SUM(OFFSET(A$1; 0; 0; ROW(A7)-ROW(A$1); 1))。上の行ではなく自分自身を参照するため、常に範囲を正しく調整します。
ティルマンフォーゲル

@TilmanVogelの叫びが答えになります!どうもありがとう
Genarito

5

この回答はLibra Officeに固有のものですが、Excelでも同様に機能するはずです。

基本的に、凍結する行/列を明示的に言及したい場合、その行/列で$を言及する必要があります。

*数式を他のセルにコピーすると、Libra Officeが数式の値を変更する方法を自動的に決定するように、組み込みのアルゴリズムもあります。

したがって、すべての行を追加する必要があると仮定しましょうG1:GN =>ここで、Nは現在の行番号です。このために、最初の値の行を修正し、他の値をそのままにしておきます。したがって、式は次のようになります。

= SUM(G $ 1:G1)-> 1行目で、他のセルに数式をコピーして貼り付けることができます。

Libra Officeは、G1を最初の値として自動的に保持し、すべてのセルの2番目の値をG2、G3などに動的に変更します。


Apostolos55の答え> = Sum($ A1:A1)<のように、同じ列の他のセルに数式をコピーすると行が変化するのに対して列Aのみが固定されるため、機能しません。したがって、式の正しい値を取得するには、行の前に$を追加する必要があります。さらに、他の組み合わせが何であるかを説明しなかったので、代替を提供しました。セルを一定に保つ必要がある場合は、行と列の両方に$を適用する必要があります。
プラティーク

3

わかりました、Indirect()は揮発性です...シートが大きくなると、遅くなります。それがあなたに合っているなら、あなたは使いた方が良いでしょう:

=Sum($A1:A1)

この式を下にドラッグすると、常にA1から現在の(または前のなどの)セルまでの範囲があります。揮発性なし、非常に高速、はるかにシンプル!


答えてくれてありがとう。私の理解を助けてください、あなたの答えは@Doktoro Reichardのそれとどう違いますか?
マークメーアー

これは、次の列で言うように、セルと一緒に「追跡」できる合計です。次に、IFを使用すると、最後の合計のみを表示/計算できます。おそらくあなたが探しているものではなく、知っておくと良いでしょう。
アポストロス55

情報のおかげで。元の質問(セルのの数値を合計する式を具体的に探している)からの問題を解決しないことは正しいですが、他の状況では役立つ場合があります。
マークメウアー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.