【问题标题】:Format cells based on start and end date?根据开始和结束日期格式化单元格?
【发布时间】:2012-11-26 15:57:26
【问题描述】:

我有两列,StartFinish(两个日期),我想将它们用于条件格式。在开始和结束列的右侧,我基本上有一个日历,每一列代表一个月(例如,J 代表一月,F 代表二月,M、A 等)。在这个日历中,我想填写指示开始日期和结束日期的两个单元格。例如,如果我的 Start 值是 2013 年 1 月,而我的 Finish 值是 2013 年 3 月,它会将填充应用到相应的单元格。

我已经探索了“条件格式”菜单,我假设我必须使用一个公式,但我不确定如何实现一个公式。这是最好的方法吗?还有其他方法吗? VB 会简化这个任务吗?

我假设我可以对每个单元格应用条件格式,类似于以下伪代码:

=IF(startDate is January 2013) then use the formatting defined in this dialog box
=IF(startDate is February 2013) then use the formatting defined in this dialog box

每个日期等等。但是,我对语法持谨慎态度。根据Tech on the Net,它定义=IF 语法如下:

IF( condition, [value_if_true], [value_if_false] )

显然,condition 与日期匹配,而 value_if_true 和 value_if_false 对我来说没有意义,因为我没有返回值,我只是有条件地格式化单元格。

谢谢!

更新:这里是大体布局图,也就是每个任务有一行,对应日历。

这是我尝试用于条件格式的公式:

=MONTH($B6)=COLUMNS($D6:AM6)

我想我需要以不同的方式设置我的列标题几个月。现在,为了简洁起见,它们只是作为文本的单个字母,但我将输入日期并正确格式化标题。会随着进度更新。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你是说每个月只有一个单元格吗?如果是这样,那么假设 A2 中的开始日期,B2 中的结束日期,然后 D2:O2 中的 12 个月单元格,然后试试这个:

    选择 D2:O2 并在条件格式中应用此公式

    =MONTH($A2)=COLUMNS($D2:D2)

    应用所需格式 > 确定

    【讨论】:

    • 谢谢。我应该详细说明的。我的电子表格中的每一行都是一个任务,它有一个相应的开始和结束日期。我将日期输入为=DATE(2013, 1, 10),并将条件格式应用于 D6:AM6,但它不起作用。查看我最初帖子的更新。
    • 您想应用到刚刚开始日期和结束日期还是两者之间的所有单元格?如果您在第 2 行中有日期会更简单 - 它们可以被格式化为与现在相同 - 将 1/1/2013 放入 D2 并将自定义格式设置为 MMMMM 以仅显示 J,现在在 E2 中使用此公式复制到 @ 987654323@ - 所有日期的格式都与以前相同 - 有问题吗?
    • 不,实际上,我没有意识到日期只是文本。所以我将日期重新输入为=DATE() 而不仅仅是文本并相应地格式化它们。您认为选择范围内的所有月份或仅选择开始和结束月份会更容易吗?
    • 如果您按照上面的建议格式化第 2 行,那么条件格式中的这个公式可以格式化两个 =(D$2>=$B6-DAY($B6)+1)*(D$2<=$C6-DAY($C6)+1) 之间的所有日期,仅适用于 D6 并复制到其余部分或适用于 D6:AM20 或类似取决于行数
    • 这很好用。起初,我以为不是,但后来我意识到 Excel 需要几秒钟才能重新绘制屏幕。非常感谢。