我正在努力增加我花在使用google sheets上的习惯上的时间。如果你看一下this example sheet,我在第3-8列中保留了我的个人习惯(参见第一行的偏移量)。
要添加与食物相关的习惯次数(第5列和第6列),我可以使用range in offset函数(请参阅“食物”下面的D17中的公式)。
问题是:如何将锻炼和睡眠的数字相加(列偏移量4、7和8)?这里的列数可以是2、3或更多!它们可能不是连续的。
谢谢你的指点。
发布于 2020-09-23 12:57:50
要对列在给定数组中的行的条目求和,我将使用
=SUMPRODUCT(COUNTIF({5,8,9},COLUMN(D3:J3))*(D3:J3))这是电子表格中E18的公式。
发布于 2020-09-23 17:59:36
由于列可能不是连续的,并且它们的数量可能是可变的,因此我认为使用Apps脚本custom function,并使用spread syntax来说明可变数量的列是合适的。
只需打开绑定到您的文件的脚本,复制此函数并保存项目:
function HABIT_TOTALS(...habitIndexes) {
const sheet = SpreadsheetApp.getActiveSheet();
const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
let output = [];
for (let dayIndex = 0; dayIndex < 7; dayIndex++) {
let dayValue = 0;
habitIndexes.forEach(habitIndex => {
const columnIndex = headers.indexOf(habitIndex) + 1;
const dailyHabitValue = sheet.getRange(3, columnIndex).getValue();
const dayHabitValue = sheet.getRange(4 + dayIndex, columnIndex).getValue();
dayValue = Number(dayValue) + Number(dailyHabitValue) + Number(dayHabitValue);
});
output.push([dayValue]);
}
return output;
}备注:
=HABIT_TOTALS(4,7,8)).
=HABIT_TOTALS(4,7,8)).
4、7、8),可在工作表的第一行找到)。
dayIndex),返回每天的总金额。因此,无需向下拖动公式。对于每一天,function.
Daily和当天的值与当天的总值相加。
output,此combination.
函数返回的值可用于Food习惯,只需更改参数:=HABIT_TOTALS(5,6),或用于任何其他any

参考资料:
发布于 2020-09-24 18:20:56
关于食物的计算,您可以在单元格D18中尝试
=sum(filter(filter($D$3:$I$11, regexmatch($C$3:$C$11, "Daily|"&text($C18, "ddd"))), regexmatch($D$1:$I$1&"", "5|6")))然后填饱。
末尾的数字是指您在第1行中的列编号。因此,在E18 (睡眠和锻炼)中,您将具有
=sum(filter(filter($D$3:$I$11, regexmatch($C$3:$C$11, "Daily|"&text($C18, "ddd"))), regexmatch($D$1:$I$1&"", "4|7|8")))当然,也可以将最后一部分写入单元格,然后引用该单元格。这意味着您可以输入E18
=sum(filter(filter($D$3:$I$11, regexmatch($C$3:$C$11, "Daily|"&text($C18, "ddd"))), regexmatch($D$1:$I$1&"", D$17)))然后向下向右填充。

看看能不能帮上忙?
https://stackoverflow.com/questions/64020815
复制相似问题