谷歌表格在不断变化的表格数量上对单元格求和



我正在尝试将电子表格从Excel转换为Google Sheets。除了以下公式外,大多数公式都如预期一样工作:

=SUM('J Slater:Job Sheet'!C6)

我正在使用它对一系列图纸上的特定单元格求和。此公式允许在该范围之间添加图纸,也可以添加到求和单元格中,而不会对公式进行任何更改。我找不到在Google Sheets中复制这一点的方法。

您可以使用Google表单中的自定义函数来完成此操作:

脚本:

/**
* @returns {Number} Sum of all values from startSheet to endSheet
* @customfunction
*
* @param {String=} startSheet
* @param {String=} endSheet
* @param {String=} range
*/
function SUMSHEETS(startSheet = 'Sheet1', endSheet = 'Sheet2', range = 'A2') {
if ([...arguments].some(arg => typeof arg !== 'string' || arg === ''))
throw new Error('All arguments must be non-empty strings');
const [addValue, getOutput] = (() => {
let output = 0;
return [
sh => {
output += Number(sh.getRange(range).getValue());
},
() => output,
];
})();
let toggle = 0;
const end = SpreadsheetApp.getActive()
.getSheets()
.some(sheet => {
if (toggle) addValue(sheet);
switch (sheet.getName()) {
case startSheet:
toggle = 1;
addValue(sheet);
break;
case endSheet:
return true;
}
});
if (!toggle || !end) throw new Error('Sheet(s) not found!');
return getOutput();
}

用法:

=SUMSHEETS("J Slater","Job Sheet","C6")

最新更新