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

Google Sheets脚本需求:按周二起始周交替单元格背景色

Google Apps Script 实现周二起始周的交替背景色设置

问题分析

默认的WEEKNUM函数以周日或周一为周起始,无法适配周二作为周起始的规则,因此需要自定义周数计算逻辑来实现交替着色。


方案1:Google Apps Script 实现

以下脚本会遍历指定范围的日期单元格,计算每个日期所属的「周二起始周」序号,根据奇偶性交替设置灰色/白色背景:

function setAlternatingWeekColors() {
  const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 假设日期数据在A列,从第2行开始(A1为表头),可按需修改范围
  const targetRange = activeSheet.getRange("A2:A" + activeSheet.getLastRow());
  const dateValues = targetRange.getValues();
  const backgroundColors = [];

  // 定义交替颜色,可自行修改十六进制值
  const grayColor = "#E0E0E0";
  const whiteColor = "#FFFFFF";

  dateValues.forEach(row => {
    const cellDate = row[0];
    // 非日期单元格默认设为白色
    if (!(cellDate instanceof Date)) {
      backgroundColors.push([whiteColor]);
      return;
    }

    // 计算当前日期到最近的上一个周二的天数
    const dayOfWeek = cellDate.getDay(); // 0=周日, 1=周一, 2=周二, ..., 6=周六
    const daysToLastTuesday = dayOfWeek >= 2 ? dayOfWeek - 2 : dayOfWeek + 5;
    const weekStartDate = new Date(cellDate);
    weekStartDate.setDate(cellDate.getDate() - daysToLastTuesday);

    // 选择一个足够早的基准周二(确保覆盖所有数据日期),这里用2020年1月7日(周二)
    const baseTuesday = new Date("2020-01-07");
    // 计算当前周起始日与基准日的周数差
    const weekDifference = Math.floor((weekStartDate.getTime() - baseTuesday.getTime()) / (7 * 24 * 60 * 60 * 1000));

    // 偶数周(含0)设灰色,奇数周设白色,可根据需求反转
    const cellColor = weekDifference % 2 === 0 ? grayColor : whiteColor;
    backgroundColors.push([cellColor]);
  });

  // 批量设置背景色,提升执行效率
  targetRange.setBackgrounds(backgroundColors);
}

使用说明

  1. 打开你的Google表格,点击「扩展程序」>「Apps脚本」
  2. 粘贴上述代码,保存项目并命名
  3. 返回表格,点击「扩展程序」> 你的脚本名称 > 运行(首次运行需要授权)
  4. 可将脚本绑定到表格按钮,方便一键执行

方案2:条件格式公式实现(无需脚本)

如果不想用脚本,也可以通过自定义条件格式公式实现:

  1. 选中日期单元格范围
  2. 点击「格式」>「条件格式」
  3. 选择「自定义公式」,输入以下公式:
=ISEVEN(INT((A1 - DATE(YEAR(A1),1,1) - (2 - WEEKDAY(DATE(YEAR(A1),1,1),2)))/7) + 1)
  1. 设置满足条件时的背景色为灰色,再添加另一个条件公式=ISODD(INT((A1 - DATE(YEAR(A1),1,1) - (2 - WEEKDAY(DATE(YEAR(A1),1,1),2)))/7) + 1)设置白色背景

公式说明

  • WEEKDAY(...,2):将周一设为1,周二设为2,以此类推
  • 计算当年第一个周二的偏移量,再算出当前日期属于第几个周二起始周,最后判断奇偶性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:50:17