技术问询:在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; }
如何在工作表中使用这个函数
- 打开你的Google Sheets,点击菜单栏的「扩展程序」→「Apps脚本」,把上面的完整代码粘贴进去,保存并命名项目(比如"CountBGColor")。
- 返回工作表,在需要显示统计结果的单元格中输入公式:
这里的=countBG("A2:Z2", "A1")"A2:Z2"是你要统计的目标行范围,"A1"是带有你要统计背景色的参考单元格(你可以根据实际位置修改这两个参数)。
计算半小时工作时段数
因为每个带颜色的单元格代表一个半小时时段,所以统计出来的数量就是当日的半小时工作时段数。如果需要转换成小时数,只需要在公式后除以2即可:
=countBG("A2:Z2", "A1")/2
内容的提问来源于stack exchange,提问作者Dingo Bruce
相关产品推荐
相关产品推荐

