如何使用VBA基于另一个单元格中的值和日期差异为单元格着色

时间:2017-04-04 07:30:56

标签: excel vba excel-vba

考虑我在Excel中有一个表A - 详情如下: enter image description here

另一个表B如下 enter image description here

我想要输出如下, 必须使用表A中的名称检查表B中的名称,并且应从表A中选择相应的StartDateEndDate,并且应将其与表B中的日期进行比较,并且该名称下的单元格应该如果表A中的Status在"进行中"如果在"暂停"

,则为红色

例如:
考虑表B中的Jack,它在表A中有3条记录,应该选择第一个开始日期,即4-Apr-2017,结束日期为27-Apr-2017,并且必须根据状态字段完成相应的着色。 enter image description here

如何使用Excel中的VBA /任何内容实现此目的。我是VBA的新手。

1 个答案:

答案 0 :(得分:0)

是的,你可以在VBA中这样做,但我建议使用条件格式(公式),因为它不需要编程知识。为此,您需要使用Vlookup formula

我相信您想要的输出是图片链接中的内容吗? Example table

要进行条件格式设置,请查看“主页”标签下的“样式” - >>条件格式。突出显示要格式化的单元格,然后选择条件格式 - >新规则。这将导致弹出一个新窗口。选择“使用公式确定要格式化的单元格”。

您需要2种条件格式。

1.如果日期在开始日期和结束日期之内,则显示绿色。为此,选择甘特图中的第一个单元格(示例中为单元格B8),然后在下面输入公式。

=IF(AND(B$7>=VLOOKUP($A8,$A$2:$D$5,3,FALSE()),B$7<=VLOOKUP($A8,$A$2:$D$5,4,FALSE())),TRUE(),FALSE())

2.当用户的项目超出截止日期时显示红色,请输入以下公式,并突出显示相同的单元格。

=IF(B$7>VLOOKUP($A8,$A$2:$D$5,4,FALSE()),TRUE(),FALSE())

完成后,您可以应用格式画家或使用条件格式复制和粘贴单元格来扩展表格/甘特图。

请注意,$符号很重要,因为它们会锁定公式中的相对引用位置。使用第二个公式作为示例,B $ 7引用日期,您需要将引用锁定到第7行,其中所有日期都是。另一方面,列引用(列B)可以根据需要更改为列,以便与其他日期进行正确比较。

对于每个用户的多个项目,您可以扩展您的初始问题吗?您想根据每位用户或每件商品进行跟踪吗?我假设您正在创建一个甘特图来跟踪项目。在这种情况下,跟踪分配给人们的特定任务会更有意义。您可以根据任务修改给定的示例。