web-dev-qa-db-ja.com

別の列の値に基づいて再起動する積算合計を含む配列数式

ある種のフィルターを使用して積算合計を作成しようとしましたが、その方法を理解できませんでした。 MMULTを使用してランニングトータルを行う人々を見てきましたが、それをどのように適応させるかはわかりません。

Example

列Aを見るとわかるように、新しい実行合計であるか、継続していて、Aが再び「新規」になるまでCが列Bで実行合計を実行する必要がある場合は、指定された時間があります。

Googleスプレッドシートの例

存在しない可能性のあるMMULTソリューションを探すよりも、このために カスタム関数 を記述する方が簡単です。関数は次のように使用されます

=runningtotal(B2:B12, A2:A12, "New")

ここで、B2:B12はデータのある範囲、A2:A12は再起動の条件のある範囲、「新規」は合計を再起動する必要があることを示す値です。

スクリプトはデータに対してループを実行し、totalの合計を集計し、必要に応じて再起動します。

function runningTotal(data, conditions, str) {
  var output = [];
  var total = 0;
  for (var i in data) {
    total = (conditions[i][0] == str ? data[i][0] : total + data[i][0]);
    output.Push([total]);
  }
  return output;
}
1
user135384