[英]Compare range of time in two worksheets and fill the cells between ranges with a color
有兩張紙。 第一個是動態更新和獲取開始數據庫的更新時間以及結束時間。 第二個數據庫包含從第一個數據庫中借用的時間以及每個數據庫在每周幾日內更新的名稱。 問題是,如何為每個更新的數據庫的時間范圍之間的顏色填充單元格?
有第一張紙的示例:
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 - - -
根據以下公式創建條件格式設置規則,
=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)
VBA,
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
您可以通過多種方法來完成此任務。 (六種方法,不在我的頭上!)
這是不需要VBA的一個...
如果最終目標是提供“完成情況的圖形指示”,那么我認為最簡單的方法(因此最容易適應將來的變化)以及“對最少的工作也最美觀”,它將顯示Unicode塊字符 (即█
),而不是嘗試動態填充單元格。
在C7
輸入此公式(然后復制/粘貼到您的范圍的其余部分):
=IF(AND($B8>VLOOKUP(C$6,ssTimes,2,FALSE),$B7<=VLOOKUP(C$6,ssTimes,3,FALSE)),"█████","")
ssTimes
是A2:C4
開始/停止時間查找的命名范圍。
其他符號( ░▒▓ ▌▌▌● ☺
)也可以替換為不同的數據或條件,或僅替換為 為了美觀 是𝒸𝑜𝑜𝓁。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.