1

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

我有一个为期六周的计划(每列代表一周中的一天(周一到周五,不包括周末)),我想在没有任何用户交互的情况下将每一列涂成绿色,这样当我查看它,它将准确地“标记”每一天。

这就是我希望实现的目标:我在 1 月 1 日星期一查看计划。然后我要到 1 月 4 日星期四才能访问它;打开计划后,我将看到 MW 列已用绿色阴影显示,而六周剩余时间的计划其余部分保持无阴影,这应在六周计划的剩余时间内继续.

这可能吗?

我想VBA将用于检查系统时间,然后根据它是哪一天应用格式。

非常感谢。

更新

这是我的计划者的样子:

规划师

4

2 回答 2

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 现在定义了应突出显示列的间隔。

在此处输入图像描述

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

在此处输入图像描述

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

于 2012-08-22T11:08:32.997 回答
0

使用此条件格式公式:

=IF(DAYS360(日期(B$2;B$3;B$4);今天())>1;1;0)

所做的是如果(此列日期与今天之间的差异大于 1 天,为真,否则为假)

在像这样的工作表中使用它 在此处输入图像描述

于 2012-08-22T14:28:37.360 回答