Google Sheets中高亮单元格计数及日期筛选联动实现方案
Google Sheets 按颜色统计并结合日期范围筛选的解决方案
方案一:基于条件逻辑统计(推荐,不依赖单元格颜色)
你的黄底红字格式是通过公式=INDEX(COUNTIFS(B:B,B6,ROW(B:B), ">="&ROW(B6)))=1设置的,直接基于该条件+日期范围统计更可靠(避免手动修改颜色导致统计偏差)。
在Stats!P2单元格输入以下公式:
=SUMPRODUCT( --(Haulage!A:A>=Stats!C1), --(Haulage!A:A<=Stats!C2), --(INDEX(COUNTIFS(Haulage!B:B, Haulage!B:B, ROW(Haulage!B:B), ">="&ROW(Haulage!B:B)),,1)=1) )
公式说明:
--(Haulage!A:A>=Stats!C1)和--(Haulage!A:A<=Stats!C2):将日期范围条件转换为1/0的布尔值数组--(INDEX(COUNTIFS(...)=1):判断Haulage!B列单元格是否为首次出现的唯一值(和你之前的辅助列逻辑完全一致)SUMPRODUCT:将三个条件的数组相乘后求和,得到同时满足日期范围和唯一值条件的单元格数量
方案二:自定义函数按颜色统计(直接匹配黄底红字)
如果必须基于单元格颜色统计,需要用Google Apps Script创建自定义函数:
- 打开工作表,点击「扩展程序」>「Apps Script」
- 删除默认代码,粘贴以下脚本:
function COUNT_COLOR_WITH_DATE(startDate, endDate) { const haulageSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Haulage"); const dataRange = haulageSheet.getDataRange(); const values = dataRange.getValues(); const backgrounds = dataRange.getBackgrounds(); const fontColors = dataRange.getFontColors(); let count = 0; // 调整列索引:日期列(A列=0)、目标统计列(B列=1),可根据实际修改 const dateColIndex = 0; const targetColIndex = 1; // 匹配你的黄底和红字RGB值(可从单元格格式面板复制) const yellowBg = "#ffff00"; const redFont = "#ff0000"; for (let i = 1; i < values.length; i++) { const cellDate = values[i][dateColIndex]; if (cellDate >= startDate && cellDate <= endDate) { const bg = backgrounds[i][targetColIndex]; const font = fontColors[i][targetColIndex]; if (bg === yellowBg && font === redFont) count++; } } return count; }
- 保存项目(命名任意),回到Stats工作表
- 在
P2输入公式:
=COUNT_COLOR_WITH_DATE(C1,C2)
首次运行会要求授权脚本权限,按提示完成即可。
注意事项:
- 确保代码中的RGB值与实际条件格式的黄底、红字颜色完全一致
- 若日期列或目标列不是A/B列,修改代码中
dateColIndex和targetColIndex的数值(列索引从0开始)
内容的提问来源于stack exchange,提问作者The_Train
相关产品推荐
相关产品推荐

