5

A1 から A20 に数値があり、列 A の 5 つのセルの重複しない範囲を合計し、結果を列 E のセルに格納したいとします。これは次のようになります (式が各 E 列のセルに入力された場合)手動):

E1 = SUM(A1:A5)
E2 = SUM(A6:A10)
E3 = SUM(A11:A15)
E4 = SUM(A16:A20)

ただし、数式を E セルに手動で入力したくありません。Aの5つのセルの重複しない範囲を維持しながら、E1で数式を選択してE4にドラッグできるようにしたい! Excel では、既定ではこの動作が行われません。代わりに、次のようになります。

E1 = SUM(A1:A5)
E2 = SUM(A2:A6)
E2 = SUM(A3:A7)
E4 = SUM(A4:A8)

各 SUM() 関数で 5 つのセルの範囲がどのように重なっているのがわかりますか? 例: A1:A5 および A2:A6。それは私が望むものではありません。

では、これを可能にする式は何でしょうか? 基本的に、次の疑似コードは機能しますが、Excel でそのようなものを実装できないようです。

SUM(CELL(COLUMN, (CURRENT_ROW - 1) * 5 + 1):CELL(COLUMN, (CURRENT_ROW - 1) * 5 + 5))

たとえば、E2 の場合、CURRENT_ROW = 2 は次のようになります。

SUM(CELL(A, (2 - 1) * 5 + 1):CELL(A, (2 - 1) * 5 + 5))
= SUM(CELL(A, 6):CELL(A, 10))

この疑似コードは、CELL にメソッド シグネチャ CELL(row, column) があることを前提としています。

4

2 に答える 2

2

その鍵となるのが OFFSET 関数です。Offset は、開始セル、行数、列数、オプションの高さと幅を取り、その場でセル/範囲への参照を生成します。秘訣は、他の関数を使用して行オフセットと他のパラメーターを生成することです。

私はあなたが望むことをするように見える何かをまとめました.私はそれを説明できるかどうか見てみましょう.

列 A: 整数 (A1) 0、(A2) 1、(A3) 2,3,4,5 など.​​..これは、オフセットしている数のインデックスです。おそらく、次のようなものを使用してこれを削除できます行関数) 列 D (またはその他の任意の場所): D1 から始まる、合計したい数値 - 実際には (D1) 1、(D2) 2,3,4,5 を使用しました...

列 B はあなたにとって興味深いものです。式は次のとおりです。

=SUM(OFFSET(D$1,A1*5,0,5,1))

実行内容: 以下によって定義される範囲の合計: (A1 * 5) 個のセルから始まり、$D$1 の向かい側が 0 であるセルのブロック (高さ 5、幅 1)。編集を参照してください。Aセルに任意の数値を入力してこの原則を使用できるため、これを残しました。

それが何らかの意味を成すことを願っていますか?Excel は、テキストによる説明には向いていません。

編集:セルA1を削除しました...、ROW()は自己参照を許可することを思い出しました。つまり、できることを意味します

 =SUM(OFFSET(D$1,(ROW(B1)-1)*5,0,5,1))

この数式はセル B1 (貼り付けたもの) にあり、データは列 D にあり、1 から始まります。

于 2010-12-19T12:56:58.767 に答える
2

この数式は、セル E1 に入力され、E2、E3 などに入力されると正しい結果が得られます...

=SUM(OFFSET(A1,ROW(A1)*4-4,0,5,1))
于 2010-12-19T14:00:58.370 に答える