If statement googlesheets-If语句填充单元格
感觉这应该很容易,但我不断地发现与循环逻辑相关的错误 C列“总计”将始终由用户首先输入。如果用户在B列“变量”中输入数字,则A列“固定”将填充C-B。如果用户在A列“固定”中输入数字,则B列“变量”将填充C-AIf statement googlesheets-If语句填充单元格,if-statement,google-sheets,If Statement,Google Sheets,感觉这应该很容易,但我不断地发现与循环逻辑相关的错误 C列“总计”将始终由用户首先输入。如果用户在B列“变量”中输入数字,则A列“固定”将填充C-B。如果用户在A列“固定”中输入数字,则B列“变量”将填充C-A 您试图添加的公式总是需要相互依赖才能生成输出,因此,它将遇到循环依赖错误 可能的解决方案: 尝试使用文件–>电子表格设置–>计算下的“迭代计算”选项。您可以看到迭代计算的说明。这里有一种避免循环引用的方法:不要手动输入任何公式,而是仅在必要时使用onEdit()脚本以编程方式插入公式 编
您试图添加的公式总是需要相互依赖才能生成输出,因此,它将遇到循环依赖错误 可能的解决方案:
尝试使用文件–>电子表格设置–>计算下的“迭代计算”选项。您可以看到迭代计算的说明。这里有一种避免循环引用的方法:不要手动输入任何公式,而是仅在必要时使用
onEdit()
脚本以编程方式插入公式
编辑a列时,以下脚本将在B列中输入公式,反之亦然:
function onEdit(e) {
if (!e) {
throw new Error('Please do not run the script in the script editor window. It runs automatically when you hand edit the spreadsheet.');
}
const watchSheet = /^(Sheet1|Sheet2|Sheet3|Sheet4)$/i;
const watchColumns = [
{
colNumber: 1,
formula: '=C:C - B:B',
},
{
colNumber: 2,
formula: '=C:C - A:A',
},
];
const sheet = e.range.getSheet();
if (!sheet.getName().match(watchSheet)) {
return;
}
const editedColumn = watchColumns.filter(column => column.colNumber === e.range.columnStart)[0];
if (!editedColumn) {
return;
}
const updateColumns = watchColumns.filter(column => column.colNumber !== editedColumn.colNumber);
updateColumns.forEach(column => {
sheet
.getRange(e.range.rowStart, column.colNumber)
.setFormula(column.formula);
});
}