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

VBA条件格式设置求助:日期超14天且U列为No时标红

解决Excel VBA条件格式未关联U列内容的问题

直接修正后的代码如下:

Sub SetOverdueFormat()
    Dim Overdue As Range

    Set Overdue = Worksheets("Progress").Range("X3:X3000")
    Overdue.FormatConditions.Delete
    ' 添加同时满足日期超14天、单元格非空、对应U列为"No"的条件规则
    Overdue.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(NOT(ISBLANK($X3)), NOW()-X3>14, $U3=""No"")"
    ' 设置单元格背景为红色
    Overdue.FormatConditions(1).Interior.Color = 13551615
End Sub

关键修改说明

  • 核心是更新了条件格式的公式,通过AND函数新增$U3=""No""的判断,确保只有对应行U列内容为"No"时,才会触发标红规则
  • 公式中使用$U3(列绝对引用、行相对引用),保证规则应用到X列每一行时,都会匹配对应行的U列内容
  • 原代码缺少U列判断逻辑,导致无论U列是"Yes"还是"No",只要日期超14天就会标红,现在的公式完美解决了这个问题

额外建议

因为你提到复制数据会清除普通条件格式,建议把这个宏绑定到工作表的Worksheet_Change事件中,每次数据更新时自动重新应用格式:

Private Sub Worksheet_Change(ByVal Target As Range)
    ' 仅当修改的单元格在X3:X3000或U3:U3000范围内时,重新应用格式
    If Not Intersect(Target, Me.Range("X3:X3000,U3:U3000")) Is Nothing Then
        SetOverdueFormat
    End If
End Sub

把这段代码放在"Progress"工作表的代码模块中,就能自动维护条件格式了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:12:55