You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:在Google Sheets中统计特定背景颜色的单元格(餐厅排班)

如何在Google Sheets中统计指定背景颜色的单元格数量(用于餐厅排班表)

我正在制作餐厅的可视化排班表,核心需求是统计某一行中带有特定背景颜色的单元格数量,以此来计算当日的半小时工作时段数。目前我已经写了部分自定义脚本,但还没完成,以下是我的脚本片段:

function countBG(range, colorref) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var color = sheet.getRange(colorref).getBackground();
  // 后续逻辑待补充
}

完整的自定义函数实现

我来帮你补全这个函数,让它能准确统计指定范围内和参考单元格颜色一致的单元格数量:

function countBG(range, colorref) {
  var sheet = SpreadsheetApp.getActiveSheet();
  // 获取参考单元格的背景色
  var targetColor = sheet.getRange(colorref).getBackground();
  // 获取目标范围的所有单元格背景色
  var rangeColors = sheet.getRange(range).getBackgrounds();
  var count = 0;
  
  // 遍历所有单元格,统计匹配颜色的数量
  for (var row = 0; row < rangeColors.length; row++) {
    for (var col = 0; col < rangeColors[row].length; col++) {
      if (rangeColors[row][col] === targetColor) {
        count++;
      }
    }
  }
  
  return count;
}

如何在工作表中使用这个函数

  1. 打开你的Google Sheets,点击菜单栏的「扩展程序」→「Apps脚本」,把上面的完整代码粘贴进去,保存并命名项目(比如"CountBGColor")。
  2. 返回工作表,在需要显示统计结果的单元格中输入公式:
    =countBG("A2:Z2", "A1")
    
    这里的"A2:Z2"是你要统计的目标行范围,"A1"是带有你要统计背景色的参考单元格(你可以根据实际位置修改这两个参数)。

计算半小时工作时段数

因为每个带颜色的单元格代表一个半小时时段,所以统计出来的数量就是当日的半小时工作时段数。如果需要转换成小时数,只需要在公式后除以2即可:

=countBG("A2:Z2", "A1")/2

内容的提问来源于stack exchange,提问作者Dingo Bruce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:32:24