Excel - 条件格式 - 基于当前日期的更新

时间:2012-08-22 10:10:29

标签: excel vba

如何根据当前日期将条件格式应用于一系列单元格(Excel 2007)?

我有一个为期六周的计划(每列代表一周中的一天(周一至周五,周末排除))并且我希望在每天通过时将每个列着色为绿色而没有任何用户交互,所以当我看着它,它会准确地每天“标记”。

这是我希望实现的目标:我在1月1日星期一查看该计划。然后,我要到1月4日星期四才能访问它;一旦计划开启,我将看到列MW已被绿色阴影,而六周剩余时间的其余计划仍然没有阴影,这应该在六周计划的剩余时间内继续

这可能吗?

我认为VBA将用于检查系统时间,然后根据它的日期应用格式。

非常感谢。

更新

这就是我的计划者的样子:

Planner

2 个答案:

答案 0 :(得分:2)

当然,这是可能的。以下内容应该让您走上正轨。

首先,您可以通过在工作簿关闭时将当前日期/时间存储在单元格中来记录上次访问工作簿的时间。这可以使用Workbook_BeforeClose事件来完成,该事件必须放在工作簿模块中。打开VBA编辑器( Alt - F11 ),然后打开ThisWorkbook模块并将此代码粘贴到其中。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheet1.Range("B2").Value = Now()
End Sub

每次关闭工作簿时,将在单元格B2中记录关闭时间的日期/时间(根据需要更改)。

在单元格B3中,使用=NOW() Excel公式显示当前日期时间。单元格B2和B3现在定义应突出显示列的间隔。

enter image description here

然后如何格式化列...假设您的列具有日期标题,如上图所示。选择“日历”范围(上例中的C5:I12),然后点击条件格式&gt;新规则...&gt;使用公式。该公式应为=AND(C$5>$B$2,C$5<$B$3),这意味着只有标题中的日期在上次关闭工作簿之后,但在此之前(根据需要调整)的列将被格式化。点击格式... 以选择例如绿色填充,或其他什么。然后确定

enter image description here

当然,您可以通过多种方式对其进行改进(例如,四舍五入到午夜的前一天或下一天),但至少您现在应该走在正确的轨道上。

答案 1 :(得分:0)

使用此条件格式公式:

= IF(DAYS360(DATE(B $ 2; B $ 3; B $ 4); TODAY())→1; 1; 0)

做的是什么 如果(这个colums日期和今天之间的差异超过1天,则为真,否则为假)

在像这样的表格中使用它 enter image description here