2

私は見ましたが、具体的な答えを得ることができませんでした。私がやろうとしているのは、合計未払額のセルと支払額のセルです。未払いの合計から支払った金額を差し引き、それ自体を新しい少ない金額に更新して、同じ支払額のセルに別の金額を入力すると、以前に更新された金額から再び差し引かれるようにします。さまざまな式を試しましたが、循環依存エラーが発生し続けています。セルを特定の順序で計算する方法はありますか? 最初にセル a21 を実行し、次に a21 からの更新された値を使用してセル b21 を実行します。

4

3 に答える 3

1

Google Apps ScriptのonEdit()トリガー関数を使用すると、これを簡単に行うことができます。

スクリーンショット

イベントについて およびトリガーについての「スプレッドシート編集イベント」を参照してください。

function onEdit(e) {
  // For simplicity, we'll use A1 notation to refer to cells & ranges
  var cellA1Notation = e.range.getA1Notation();

  // Check if a new payment was made
  if (cellA1Notation == 'B2') {
    // Make sure we're dealing with a number
    var payment = eval(e.value.valueOf())

    // Archive payment
    var pastPaymentRange = e.range.getSheet().getRange('B3:C3');
    pastPaymentRange.setValues([[payment,new Date()]]);
    e.range.clear(); // Clear payment

    // Update total payment
    var totalPaymentRange= e.range.getSheet().getRange('B4');
    var totalPayment = totalPaymentRange.getValue();
    if (typeof totalPayment !== 'number') totalPayment = 0;
    totalPayment += payment;
    totalPaymentRange.setValue(totalPayment);

    // Update balance
    var balanceRange = e.range.getSheet().getRange('B5');
    var balance = balanceRange.getValue();
    if (typeof balance !== 'number') balance = 0;
    balance -= payment;
    balanceRange.setValue(balance);
  }
}
于 2013-09-11T19:50:47.610 に答える
0

戦略を変更することで、スクリプトと循環参照を回避できます。入出金するたびに新しい行を追加します。あなたの数式は、sum(a3:a) のように合計を加算するだけで、ボーナスとして過去のデータを取得できます。

于 2013-09-11T20:16:47.773 に答える