【问题标题】:Google Sheets - Add to Certain Value Based on Background ColorGoogle 表格 - 根据背景颜色添加特定值
【发布时间】:2021-04-05 00:56:20
【问题描述】:

我尝试过制作 Google Apps 脚本,但在尝试了解如何设置时遇到了麻烦。从this 看来,我可以创建一个可以在电子表格本身内部调用的函数,就像 Google Sheets 提供的 SUM 函数一样。我查看了getBackground() 函数,但它似乎需要包含一些全局变量而不仅仅是函数。

这是我当前的电子表格:

我想输入一个函数,它在 A2:A1000 范围内,并根据单元格的背景颜色,确定它是进入“工作”还是“生活”,然后将其添加到单元格 E4(总计工作)或 F4(总寿命)相应。 A 列中的单元格将始终为数字。

这是我尝试过的,我想我可能完全基于我的单细胞方法而偏离了道路:

function workTime(input) {
  if (input.getBackground() == "#d9ead3") {
    input.setFontColor(4285f4)
  } else {
    input.setFontColor(null)
  }
}
//I get errors on line 3 for some reason though...

TL;DR 基于单元格的背景颜色,我如何创建一个函数来计算这些特定颜色的数字总和,并将它们显示在“总工作时间”和“总生命周期”下的不同单元格中“相应地?

【问题讨论】:

  • 不幸的是,从你的问题来看,我无法理解Based on the background colors of the cells, how do I create a function that calculates the sum of the numbers in those specific colors and displays them in different cells under the "Total Work Time" and "Total Life Time" accordingly?。而且,我无法理解您的示例图像。我为此道歉。我能问一下您期望的示例输入和输出情况吗?
  • 您可能对这个 google 表格插件 (workspace.google.com/marketplace/app/custom_count_and_sum/…) 感兴趣?
  • @Tanaike 输入 = 单元格的背景颜色 + 值(总是一个数字);输出 = 不同单元格中具有相同背景颜色的值的总和。在时间列下方有突出显示的颜色。这是由于第二列的条件格式,我放的唯一选项是“工作”或“生活”。在突出显示的单元格内,我会放置一个数字,并且我希望该函数在具有特定背景颜色(由条件格式设置)的单元格中获取数字
  • 感谢您的回复。我注意到已经发布了答案。在这种情况下,我想尊重现有的答案。

标签: google-apps-script google-sheets


【解决方案1】:

“自定义公式”方法非常有限

您将进入自定义公式的唯一输入是,而不是单元格对象。运行公式的函数永远不会知道它的位置或格式。它接收一个值或一个值数组,并返回一个值或值数组。

应用脚本版本

function workTime2() {
  let file = SpreadsheetApp.getActive();
  let sheet = file.getSheetByName("Sheet1");
  let range = sheet.getRange('A1:A16');
  let targetColor = "#00ffff"
  let values = range.getValues(); // [[1],[2],[3]...]
  let colors = range.getBackgrounds(); // [[#ffffff],[#00ffff],[#ffffff]...]

  let sum = 0
  for (let i = 1; i != values.length; i++){ // starting at 1 to skip first row
    let value = values[i][0]
    let color = colors[i][0]
    if (color == targetColor) {
      sum += value
    }
  }

  let resultCell = sheet.getRange('B2');
  resultCell.setValue(sum);
}

如果 A1:A16 中的值是绿松石色,则此脚本将求和。将总和放入 B2。

这是一种根据单元格值获取总和的方法。这应该为您提供了一个很好的起点,可以根据自己的喜好进行定制。

参考

【讨论】:

  • 嗯,我明白了您对“自定义公式”方法声明的理解。顺便说一句,我意识到我制作了一个“绑定”脚本,这样可以使工作表的检索过程和范围更加动态。但我正在考虑制作menu 来弥补更轻松的 UI 体验。这可以实现吗?
  • 是的,您可以让用户选择一个单元格,然后您可以获取脚本来计算总数并将其放入选定的单元格中。您甚至可以让该函数提示用户输入总和的范围、颜色和目标单元格。同样关于“绑定”脚本,我给出的示例需要绑定脚本,因为它调用SpreadsheetApp.getActive(),它只适用于绑定脚本。 getSelection() 也适用于绑定脚本。
猜你喜欢
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多