首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在google工作表中添加带偏移的单个字段

如何在google工作表中添加带偏移的单个字段
EN

Stack Overflow用户
提问于 2020-09-23 11:56:37
回答 3查看 37关注 0票数 0

我正在努力增加我花在使用google sheets上的习惯上的时间。如果你看一下this example sheet,我在第3-8列中保留了我的个人习惯(参见第一行的偏移量)。

要添加与食物相关的习惯次数(第5列和第6列),我可以使用range in offset函数(请参阅“食物”下面的D17中的公式)。

问题是:如何将锻炼和睡眠的数字相加(列偏移量4、7和8)?这里的列数可以是2、3或更多!它们可能不是连续的。

谢谢你的指点。

EN

回答 3

Stack Overflow用户

发布于 2020-09-23 12:57:50

要对列在给定数组中的行的条目求和,我将使用

代码语言:javascript
复制
=SUMPRODUCT(COUNTIF({5,8,9},COLUMN(D3:J3))*(D3:J3))

这是电子表格中E18的公式。

票数 1
EN

Stack Overflow用户

发布于 2020-09-23 17:59:36

由于列可能不是连续的,并且它们的数量可能是可变的,因此我认为使用Apps脚本custom function,并使用spread syntax来说明可变数量的列是合适的。

只需打开绑定到您的文件的脚本,复制此函数并保存项目:

代码语言:javascript
复制
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)).

  • This

  • 此函数可用作工作表中的任何内置公式(例如,=HABIT_TOTALS(4,7,8)).

  • This函数获取要检索的习惯的索引(在本例中为478),可在工作表的第一行找到)。

  • 它循环一周的所有日期(dayIndex),返回每天的总金额。因此,无需向下拖动公式。对于每一天,function.

  • This函数都会根据作为参数提供的习惯索引查找列索引,并将Daily和当天的值与当天的总值相加。

  • 在检索当天的总金额后,该值将被推送到output,此combination.

函数返回的值可用于Food习惯,只需更改参数:=HABIT_TOTALS(5,6),或用于任何其他any

参考资料:

票数 1
EN

Stack Overflow用户

发布于 2020-09-24 18:20:56

关于食物的计算,您可以在单元格D18中尝试

代码语言:javascript
复制
=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 (睡眠和锻炼)中,您将具有

代码语言:javascript
复制
=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

代码语言:javascript
复制
=sum(filter(filter($D$3:$I$11, regexmatch($C$3:$C$11, "Daily|"&text($C18, "ddd"))), regexmatch($D$1:$I$1&"", D$17)))

然后向下向右填充。

看看能不能帮上忙?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64020815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档