回答:
関数ROW()
とCOLUMN()
は、現在のセルの行と列を提供します。ADDRESS()
関数でこれらを使用して、現在の列の最上部から合計の上の行までの範囲を表す文字列を作成します。次に、INDIRECT()
関数を使用して、その文字列を実際の範囲に変換してSUM()
関数に渡します。合計セルの式は次のようになります。
=SUM(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))
スプレッドシートの任意のセルに入力すると、そのセルの上の列にあるすべての数値の合計が生成されます。
実際には、プレーンでやりたいことができます =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)
。そのため、新しい番号を自由に挿入できるようになりました。
SUM(OFFSET(A$1; 0; 0; ROW(A7)-ROW(A$1); 1))
。上の行ではなく自分自身を参照するため、常に範囲を正しく調整します。
この回答はLibra Officeに固有のものですが、Excelでも同様に機能するはずです。
基本的に、凍結する行/列を明示的に言及したい場合、その行/列で$を言及する必要があります。
*数式を他のセルにコピーすると、Libra Officeが数式の値を変更する方法を自動的に決定するように、組み込みのアルゴリズムもあります。
したがって、すべての行を追加する必要があると仮定しましょうG1:GN =>ここで、Nは現在の行番号です。このために、最初の値の行を修正し、他の値をそのままにしておきます。したがって、式は次のようになります。
= SUM(G $ 1:G1)-> 1行目で、他のセルに数式をコピーして貼り付けることができます。
Libra Officeは、G1を最初の値として自動的に保持し、すべてのセルの2番目の値をG2、G3などに動的に変更します。
わかりました、Indirect()は揮発性です...シートが大きくなると、遅くなります。それがあなたに合っているなら、あなたは使いた方が良いでしょう:
=Sum($A1:A1)
この式を下にドラッグすると、常にA1から現在の(または前のなどの)セルまでの範囲があります。揮発性なし、非常に高速、はるかにシンプル!