固定レベルから列の最後のセルまで、すべての列セルの合計を計算する Excel 式が必要です。Like : S5 から最後の S セルまでの SUM。
試しSUM(S5:S)
ましたが、うまくいきません。
行数のセルがあります。次のような数式で変数を使用できますSUM(S5:S & A1)
か? A1 には行数が含まれていますか?
あなたは試すかもしれません=SUM(OFFSET(S5,0,0,ROWS(S:S)-ROW(S5)+1))
A2 から列 A の最後までのすべてのセルを合計するには、次を使用できます。
=SUM(A2,INDIRECT("A2:A" & ROWS(A:A)))
これは、セル A1 に入力しても機能します。
TL;DRNamedRange
: s とを使用することをお勧めし=INDEX(NamedRange, ROW()):INDEX(NamedRange, COUNTA(NamedRange))
ます。これは、入力データが変更された場合 (サイズと値の両方)と、スプレッドシートが変更された場合 (列/行の増減) の両方で適切に動作します。このコンストラクトは、 など、配列をパラメーターとして受け取る任意の関数への入力として使用できますXLOOKUP()
。
INDEX()
私は今日、これに対する解決策を探していましたが、範囲に基づいて名前を付けたものを思いつきましたINDIRECT()
. 演習は次のとおりです。
パート 1 : 入力配列の作成
=SEQUENCE(10)
ます。これにより、1 から 10 までの数字を持つ配列 A1:A10 が作成されます。パート 2 : に基づくソリューションINDIRECT()
セル B1 に移動し、 と入力し=INDIRECT("A"&ROW()):INDIRECT("A"&COUNTA(A:A))
ます。
これには 2 つの部分があります。1 つはコロンの前、もう 1 つはコロンの後にあります。あなたが探している最終的な結果は A1:A10 ですよね?
コロンの前の部分は、列文字への固定参照"A"
、およびROW()
現在の行の番号を取得する関数を使用しています。これは、データが最初の行から始まらない場合にこのソリューションが機能するようにするためです (単なる詳細、本当に)。&
慣れていない方のために説明すると、このビットは文字列を連結するために使用されます。"A"
最後に、固定文字とから来る数字から文字列「A1」を作成していROW()
ます。
コロンの後の部分は似ていますが、処理中の配列の最後の項目の行番号を取得しようとしています。COUNTA()
これは、配列A:A
を入力として渡す関数を使用して行います。
列 B に入力配列のコピーが表示されます。テストするために、配列に 2 を掛けます。セル C1 に移動し、 と入力し=INDIRECT("A"&ROW()):INDIRECT("A"&COUNTA(A:A))*2
ます。入力配列が 2 倍になっていることがわかります。
パート 3 : に基づくソリューションINDEX()
このソリューションには、名前付き配列が必要です。これを行うには、列 A を選択します。名前ボックス (右上隅、セルの近く、リボンの下) には、おそらく A1 が表示されます。そこをクリックして、範囲に名前を付けます。たとえば、NUMBERS
.
セル D1 に移動し、 と入力し=INDEX(NUMBERS, 1):INDEX(NUMBERS, COUNTA(NUMBERS))
ます。入力配列のさらに別のコピーを取得します。
最後に、セル E1 に移動して と入力し=INDEX(NUMBERS, 1):INDEX(NUMBERS, COUNTA(NUMBERS))*2
ます。さらに別の二重配列。
パート 4 : テスト
まず第一に、項目が入力配列に追加または削除されると、動的操作は適切に動作するはずです。セル A1 に移動し、SEQUENCE()
パラメーターを 5 に変更します。次に、20 に変更します。列 B から E までの他のすべての配列は、自動的にサイズ変更されます。これは、両方のソリューションが機能することを示しています。
最後のテスト: A の前に列を追加します。列 C と D になるものがどうなるかを確認します。
はい、スプレッドシートの構造を変更すると、に基づくソリューションINDIRECT
はうまく動作しません。まだ検討していないこれを解決する方法があるかもしれませんが、今INDEX
のところ、範囲に固執して名前を付けます。誰かがこれに基づいてソリューションを「修正」する方法を提案した場合、INDIRECT()
これを編集できます。
名前付き範囲の詳細については、こちらを参照してください。