If statement Google Sheets:如果复选框被标记,则计算彩色单元格的数量

If statement Google Sheets:如果复选框被标记,则计算彩色单元格的数量,if-statement,google-apps-script,google-sheets,google-sheets-formula,conditional-formatting,If Statement,Google Apps Script,Google Sheets,Google Sheets Formula,Conditional Formatting,我试图计算复选框也被标记的列中彩色单元格的数量 例如,在F列中,有两个绿色单元格在带有标记复选框的行中。我没能想出一个公式来帮助我做到这一点。我正在使用颜色附加功能来计算彩色单元格的数量 任何帮助都将不胜感激 说明: 我会使用一个自定义函数来实现这一点,然后在工作表中将其用作公式。 请阅读更多关于它们及其局限性的信息 它们不会作为常规公式刷新,而是仅在参数更改时刷新。如果这个问题是您项目中的瓶颈,请在线查找解决方法 解决方案: 单击电子表格文件顶部菜单上的Tools=>scripted

我试图计算复选框也被标记的列中彩色单元格的数量

例如,在F列中,有两个绿色单元格在带有标记复选框的行中。我没能想出一个公式来帮助我做到这一点。我正在使用颜色附加功能来计算彩色单元格的数量

任何帮助都将不胜感激

说明:
  • 我会使用一个自定义函数来实现这一点,然后在工作表中将其用作公式。 请阅读更多关于它们及其局限性的信息

  • 它们不会作为常规公式刷新,而是仅在参数更改时刷新。如果这个问题是您项目中的瓶颈,请在线查找解决方法

解决方案: 单击电子表格文件顶部菜单上的
Tools=>scripteditor
,将以下代码复制并粘贴到空白脚本中,然后单击save

function countColors(checkboxesColumn,colorColumn,hexCode) {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getActiveSheet();
  const values = sh.getRange(checkboxesColumn).getValues().flat();
  const colors = sh.getRange(colorColumn).getBackgrounds().flat();
  return values.filter((v,i)=>v==true && colors[i]==hexCode).length;
}
然后您可以在工作表中使用该函数作为
=countColors(“C3:C”、“F3:F”、“b7e1cd”)


图纸是否会改变形状或列是否始终保持不变?如果它始终保持不变,那么您可以使用onEdit触发器实现下面的答案,这样它将在每次工作表上发生更改时得到更新谢谢Marios!非常有用。