Vba 比较两个工作表中的时间范围,并用颜色填充范围之间的单元格

Vba 比较两个工作表中的时间范围,并用颜色填充范围之间的单元格,vba,excel,time,conditional-formatting,Vba,Excel,Time,Conditional Formatting,有两张纸。第一种是动态更新和获取数据库更新的开始时间和结束时间。第二个数据库包含从第一个数据库借来的时间以及每周每天更新的每个数据库的名称。问题是如何在每个更新的DB的时间范围内用颜色填充单元格 这是第一张纸的一个例子: 1 2 3 DB_NAME start end DB1 20:30 21:02 DB2 22:04 22:26 DB3 19:05 22:10 第二张纸有一个例子: 1

有两张纸。第一种是动态更新和获取数据库更新的开始时间和结束时间。第二个数据库包含从第一个数据库借来的时间以及每周每天更新的每个数据库的名称。问题是如何在每个更新的DB的时间范围内用颜色填充单元格

这是第一张纸的一个例子:

  1        2         3 
DB_NAME  start     end
  DB1    20:30    21:02
  DB2    22:04    22:26
  DB3    19:05    22:10
第二张纸有一个例子:

 1        2         3       4      5
DAY      TIME      DB1      DB2    DB3
MON     19:05       '        '      '
        20:30       '        '      '
        21:02       '        '      '
        22:04       '        '      '
        22:10       '        '      '
        22:26       '        '      '
TUE     00:25       -        -      - 

有很多方法可以实现这一点。(六个方向,从我头顶上)

这里有一个不需要VBA

如果最终目标是提供一个“完成的图形指示”,我认为最简单的方法(因此最容易适应未来的变化)也是“最美观的,最少的工作”,应该是显示(即,
),而不是尝试动态填充单元格


  • C7
    中输入此公式(然后复制/粘贴到范围的其余部分):


    =IF(和($B8>VLOOKUP(C$6,ssTimes,2,FALSE),$B7有很多方法可以做到这一点。(六种方法,我不知道!)

    这里有一个不需要VBA

    如果最终目标是提供一个“完成的图形指示”,我认为最简单的方法(因此最容易适应未来的变化)也是“最美观的,最少的工作”,应该是显示(即,
    ),而不是尝试动态填充单元格


    • C7
      中输入此公式(然后复制/粘贴到范围的其余部分):


      =如果($B8>VLOOKUP(C$6,ssTimes,2,FALSE),$B7根据以下公式创建条件格式规则

      =AND(INDEX(Sheet4!$B:$B, MATCH(C$1, Sheet4!$A:$A, 0))<=$B2, INDEX(Sheet4!$C:$C, MATCH(C$1, Sheet4!$A:$A, 0))>=$B2)
      
      =和(索引(Sheet4!$B:$B,匹配(C$1,Sheet4!$A:$A,0))=$B2)
      
      VBA

      选项显式
      分时CFR()
      带工作表(“表5”)
      带.Range(.Cells(2,“C”),.Cells(8,“E”))
      .FormatConditions.Delete
      .FormatConditions.Add类型:=Xexpression_
      公式1:=“=和(索引(表4!$B:$B,匹配(C$1,表4!$A:$A,0))=$B2)”
      .FormatConditions(.FormatConditions.Count).Interior.Color=vbRed
      以
      以
      端接头
      

      根据以下公式创建条件格式规则

      =AND(INDEX(Sheet4!$B:$B, MATCH(C$1, Sheet4!$A:$A, 0))<=$B2, INDEX(Sheet4!$C:$C, MATCH(C$1, Sheet4!$A:$A, 0))>=$B2)
      
      =和(索引(Sheet4!$B:$B,匹配(C$1,Sheet4!$A:$A,0))=$B2)
      
      VBA

      选项显式
      分时CFR()
      带工作表(“表5”)
      带.Range(.Cells(2,“C”),.Cells(8,“E”))
      .FormatConditions.Delete
      .FormatConditions.Add类型:=Xexpression_
      公式1:=“=和(索引(表4!$B:$B,匹配(C$1,表4!$A:$A,0))=$B2)”
      .FormatConditions(.FormatConditions.Count).Interior.Color=vbRed
      以
      以
      端接头
      

      显然我做错了什么。这是同一个表,但我的示例无法执行。有运行时错误5,尽管数据正确,但它不会移动。我还发现,在扩展服务器数量时,我可以添加
      索引(Sheet1!$D:$D,MATCH(C$1,Sheet1!$A:$A,0))显然我做错了什么。这是同一个表,但我的示例无法执行。存在运行时错误5,尽管数据正确,但它不会移动。此外,我还发现,在扩展服务器数量时,我可以添加
      索引(Sheet1!$D:$D,MATCH(C$1,Sheet1!$A:$A,0))
      
      Option Explicit
      
      Sub timeCFR()
          With Worksheets("sheet5")
              With .Range(.Cells(2, "C"), .Cells(8, "E"))
                  .FormatConditions.Delete
                  .FormatConditions.Add Type:=xlExpression, _
                    Formula1:="=AND(INDEX(Sheet4!$B:$B, MATCH(C$1, Sheet4!$A:$A, 0))<=$B2, INDEX(Sheet4!$C:$C, MATCH(C$1, Sheet4!$A:$A, 0))>=$B2)"
                  .FormatConditions(.FormatConditions.Count).Interior.Color = vbRed
              End With
          End With
      End Sub