我已经看过并且无法得到我的具体答案。我要做的是拥有一个总欠款单元格和一个已付金额单元格。我希望所欠总额减去已支付的金额,并将其自身更新为新的较小金额,这样当我在相同金额的已支付单元格中输入另一个金额时,它会再次从先前更新的金额中减去。我尝试了不同的公式,但我一直以循环依赖错误告终。有没有办法让单元格按特定顺序计算?首先执行单元格 a21,然后使用来自 a21 的更新值执行单元格 b21,依此类推。
问问题
251 次
3 回答
3
您将需要使用 VBA 脚本来实现您所需要的。
代码需要位于相关Worksheet_Change
工作表的事件处理程序中。
本质上,代码应该使用以下逻辑
- 检查正在更新的单元格是否为支付金额单元格
- 重新计算欠款总额
(可选)清除支付的金额。
Private Sub Worksheet_Change(ByVal Target As Range)
结束子
于 2013-08-17T16:18:51.403 回答
1
Google Apps 脚本中的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 回答