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

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创建自定义函数:

  1. 打开工作表,点击「扩展程序」>「Apps Script」
  2. 删除默认代码,粘贴以下脚本:
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;
}
  1. 保存项目(命名任意),回到Stats工作表
  2. 在P2输入公式:
=COUNT_COLOR_WITH_DATE(C1,C2)

首次运行会要求授权脚本权限,按提示完成即可。

注意事项:

  • 确保代码中的RGB值与实际条件格式的黄底、红字颜色完全一致
  • 若日期列或目标列不是A/B列,修改代码中dateColIndex和targetColIndex的数值(列索引从0开始)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:02:16