Vba 比较两个工作表中的时间范围,并用颜色填充范围之间的单元格
有两张纸。第一种是动态更新和获取数据库更新的开始时间和结束时间。第二个数据库包含从第一个数据库借来的时间以及每周每天更新的每个数据库的名称。问题是如何在每个更新的DB的时间范围内用颜色填充单元格 这是第一张纸的一个例子: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
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