簡體   English   中英

在兩個工作表中比較時間范圍,並用顏色填充范圍之間的單元格

[英]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塊字符 (即 ),而不是嘗試動態填充單元格。


IMG

  • C7輸入此公式(然后復制/粘貼到您的范圍的其余部分):

     =IF(AND($B8>VLOOKUP(C$6,ssTimes,2,FALSE),$B7<=VLOOKUP(C$6,ssTimes,3,FALSE)),"█████","") 
  • ssTimesA2:C4開始/停止時間查找的命名范圍。

  • 其他符號( ░▒▓ ▌▌▌● ☺ )也可以替換為不同的數據或條件,或僅替換為 為了美觀 是𝒸𝑜𝑜𝓁。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM