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

如何在Google Sheets中实现:当日期单元格早于今日且目标单元格为空时将其标红

在Google Sheets中实现日期过期且单元格为空时标红的方案

嘿,这个需求用Google Sheets的条件格式就能轻松搞定,完全不需要写脚本!当然如果之后有更复杂的扩展需求,我也给你准备了Apps Script的方案,一步步来:

方法一:条件格式(推荐,简单高效)

这是最直接的方式,实时生效,每天打开表格都会自动判断:

  • 选中你要应用格式的范围(比如整个B列,或者B1:B100这样的具体行范围)
  • 点击顶部菜单栏的「格式」→「条件格式」
  • 在右侧弹出的面板里,找到「格式规则」,选择「自定义公式」
  • 在公式输入框里粘贴这个公式:
    =AND(A1<TODAY(), ISBLANK(B1))
    
    👉 解释下公式:AND()用来同时判断两个条件,A1<TODAY()检查A列的日期是否早于当前日期,ISBLANK(B1)检查对应B列单元格是否为空。注意如果你的选中范围是从B2开始的,公式要改成A2,保持行号对应就行。
  • 点击「格式样式」,把填充颜色设置为红色,最后点击「完成」就搞定了!

方法二:Apps Script(适合复杂场景)

如果之后你需要更灵活的逻辑(比如批量处理多个工作表、定时自动执行等),可以用Google Sheets自带的Apps Script(替代VBA的工具):

  • 打开你的表格,点击顶部「扩展程序」→「Apps Script」
  • 删除编辑器里默认的代码,粘贴下面的脚本:
    function highlightExpiredEmptyCells() {
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      const range = sheet.getDataRange();
      const values = range.getValues();
      const today = new Date();
      today.setHours(0, 0, 0, 0); // 重置时间部分,避免日期带时间导致判断误差
    
      // 遍历每一行数据
      for (let i = 0; i < values.length; i++) {
        const dateCell = values[i][0]; // 获取当前行A列的日期
        const valueCell = values[i][1]; // 获取当前行B列的值
        const targetCell = sheet.getRange(i + 1, 2); // 定位到当前行B列单元格
    
        // 判断条件:是有效日期、早于今天、且B单元格为空
        if (dateCell instanceof Date && dateCell < today && valueCell === "") {
          targetCell.setBackground("#ff0000"); // 设置红色填充
        } else {
          targetCell.setBackground(null); // 不符合条件时清除颜色
        }
      }
    }
    
  • 点击编辑器顶部的运行按钮,第一次运行需要授权权限,按照提示操作就行。
  • 如果你想让脚本自动执行(比如每天凌晨检查一次),可以设置时间驱动触发器:点击编辑器左侧的「触发器」图标,添加触发器,选择函数highlightExpiredEmptyCells,触发事件选「时间驱动」,设置你需要的频率(比如每天)。

一般来说,方法一完全能满足你的需求,简单又省心~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 15:52:30