スクリプトなしの累積合計


35

この質問のために、範囲の累積合計を計算するGoogle Apps Script関数を作成しました。Google+のMartin Hawkseyは、累積合計を計算するより効率的な方法についてコメントしました。

function cumulativeSum(array){
  var output = [];
  for (i in array){
    if(i==0) {
      if (array[i].length > 1) throw ("Only single column of data");
      output.push([array[i][0]]);
    } else {
      output.push([output[i-1][0] + array[i][0]]);
    }
  }
  return output;
}

私の質問は、これはフォーミュラの使用で達成できますか?


非常に遅い答えをおologiesび申し上げます。右側の「関連」のスレッドを見たところです。
AdamL

回答:


30

はい:

=ArrayFormula(SUMIF(ROW(A1:A10);"<="&ROW(A1:A10);A1:A10))

累積合計の例

緑の円内の数字は合計されているもので、ArrayFormulaは貼り付けられたセルに基づいて他のすべてを埋めています。この例では、効果を示すためにA11、B1、C1に貼り付けました。

しばらく前に作成したこのスプレッドシートは、MMULTがこれらの種類の問題にどのように使用できるかを説明しようとしています。また、シートの1つでSUMIFソリューションを示しています。この質問で。


Googleフォーラムでこの式を1回(それはあなたのものだと思います)SUMIF(ROW(A:A); "<"&ROW(A:A))でしたが、うまくいきませんでした。これは。
ジェイコブヤントゥインストラ

回答の画像は別のメンバーによって編集されました:+ Xavier Casto
AdamL

1
@Fogestは、私が「SnagItが」でよりについて知るという製品使用techsmith.com/download/snagit
ザビエルCasto

@XavierCastoああ、私はずっと前にこれを使用しましたが、これを持っていることを覚えていませんでしたが、それはずっと前でした。返信ありがとうございます。私はtechsmithの製品が好きです。
ComputerLocus

31

あなたが望むと仮定:

  Row | A | B | B's formula
  --------------------------------
   1  | 1 | 1 | =1     (or =A1)
   2  | 2 | 3 | =1+2   (or =A2+B1)
   3  | 3 | 6 | =1+2+3 (or =A3+B2)

等...

次に、次を使用できます。=sum($A$1:A1)ここA1で、合計する数字の開始点です。その数式をB1(または必要な場所に)記入して記入すると、現在の行までのすべてのセルが合計されます。または、=Ax+Bx-1上記の「Bの式」セクションの(x =現在の行、Aのデータ、Bの累積合計)形式を使用できます。


7
これが動作しているようですし、受け入れ答えよりもはるかに簡単です
Kラファエル

1
同意した、これはより簡単で、シームレスに動作します!
ロレトパリシ

1

受け入れられた答えはその場にありますが、最後のパラメータはSUMIF常に「有効な範囲」である必要があるため、より高度な積算合計計算MMULTがより良いオプションであるという事実により、大きな欠点があります。

=ARRAYFORMULA(IF(LEN(A1:A), 
 MMULT(TRANSPOSE((ROW(A1:A)<=TRANSPOSE(ROW(A1:A)))*A1:A), SIGN(A1:A)^2), ))

0

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.