If statement Google工作表中的事务处理-将值从、移动到
我正试图在google sheet上制作一个文档来管理我的财务,实际上,我希望能够跟踪我的账户之间的交易。 我努力使自己能够总结事情 实际上,我可以告诉文档我正在进行一项从-If statement Google工作表中的事务处理-将值从、移动到,if-statement,google-apps-script,google-sheets,If Statement,Google Apps Script,Google Sheets,我正试图在google sheet上制作一个文档来管理我的财务,实际上,我希望能够跟踪我的账户之间的交易。 我努力使自己能够总结事情 实际上,我可以告诉文档我正在进行一项从-到(在这种情况下,从内容1到内容3)的事务,并添加一个新的值。 我不知道如何告诉GoogleSheet将25从Content1“移动”到Content3或任何其他内容 感谢您提供的宝贵帮助。您可以使用应用程序脚本触发器触发事务,并使用复选框跟踪应触发的事务,以便在选中相应复选框时进行事务 首先,通过选择适当的单元格将复选框
到
(在这种情况下,从内容1到内容3)的事务,并添加一个新的值
。
我不知道如何告诉GoogleSheet将25从Content1“移动”到Content3或任何其他内容
感谢您提供的宝贵帮助。您可以使用应用程序脚本触发器触发事务,并使用复选框跟踪应触发的事务,以便在选中相应复选框时进行事务
- 首先,通过选择适当的单元格将复选框添加到事务行中,然后单击
Insert>Checkbox
- 然后,通过选择
打开绑定到电子表格的脚本,复制以下函数,然后保存项目。现在,每次选中复选框时,相应的交易都会发生在Tools>scripteditor
中,如果未选中,则交易会撤消(从B2:E3
到
的
和
交换位置,而钱会以相反的方式进行):到
e
)传递给onEdit
函数的信息进行检查,其中包含有关编辑单元格的信息(其值、范围等):
参考:
B3:E3
。是这样吗?在这种情况下,您可以在应用程序脚本中创建一个onEdit
触发器,并在每个事务旁边添加一个复选框,这样当选中复选框时,事务就完成了,并且B3:E3
得到更新。这样合适吗?如果是这样的话,我会考虑发表一个答案,解释一下这一点。更准确地说,我想检测它来自哪个内容
,并从该内容中减去它,然后将其移动到目的地。因此,在示例表中,我想将25从content1
移动到content3
。但是,如果我将from
列中的content 1
更改为content 2
,它将正确调整。在B3:E3
行中。此外,这应该是一个扩展列表,因此如果我在B9
之后添加另一行,它可以重复该操作。非常感谢。嗨,我贴了一个答案和一个可能的解决方案。如果您需要更多的提示,请告诉我:)最后一个问题,当我选中该框时,它将完成事务,但是当我取消选中该框时,是否可以撤消该操作?另外,我想将内容1、2、3&for更改为我的帐户名,当我阅读代码时,您使一系列内容成为可能(我说的对吗?)是否可能有“当前帐户”和“贝宝”等值?非常感谢。@pual不客气。当复选框未选中时,可以撤消操作,但这需要一些代码修改。如果时间允许,我会做的。关于你的第二个问题,是的,你的内容可以有其他名称,只要这些名称在单独的交易和交易摘要中都匹配。非常感谢。你说得对,我在我的问题后开始重命名这些,所以我可以自己检查。@pual我更新了答案中的代码,因此取消选中复选框将取消交易,我希望这对你有用!
function onEdit(e) {
var range = e.range;
var col = range.getColumn();
var row = range.getRow();
var checkbox = e.value;
var sheet = range.getSheet();
if (col === 6 && row > 8) {
var from = sheet.getRange(row, 3).getValue();
var to = sheet.getRange(row, 4).getValue();
var value = sheet.getRange(row, 5). getValue();
var valuesToUpdate = sheet.getRange("B2:E2").getValues();
var fromIndex = valuesToUpdate[0].findIndex(contents => contents === from);
var toIndex = valuesToUpdate[0].findIndex(contents => contents === to);
var fromRange = sheet.getRange(3, fromIndex + 2);
var toRange = sheet.getRange(3, toIndex + 2);
if (checkbox === "TRUE") { // MAKE TRANSACTION
fromRange.setValue(fromRange.getValue() - value);
toRange.setValue(toRange.getValue() + value);
} else if (checkbox === "FALSE") { // UNDO TRANSACTION
fromRange.setValue(fromRange.getValue() + value);
toRange.setValue(toRange.getValue() - value);
}
}
}