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