[英]Excel VBA delete row if cell value not found in a column in other sheet
[英]Excel VBA Color cell under month and year depends on cell value (date) in other sheet
如果我理解正確的話......
在運行宏之前,兩張紙(sh1 和 sh2)的情況是這樣的:
運行 sub 后的預期結果如下圖所示
Sub test()
Dim dt As Date: Dim t0 As Date: Dim t1 As Date: Dim t2 As Date
Dim rgT As Range: Dim rgN As Range: Dim c As Range: Dim cell as Range
With Sheets("sh2")
Set rgT = .Range("A2", .Range("A2").End(xlDown))
End With
With Sheets("sh1")
.Range("A2:Z1000").Interior.Color = xlNone
Set rgN = .Columns(1).SpecialCells(xlConstants)
End With
dt = "1-jan-2023"
For Each cell In rgT
t0 = cell.Offset(0, 1).Value
t1 = cell.Offset(0, 2).Value
t2 = cell.Offset(0, 3).Value
Set c = rgN.Find(cell.Value, lookat:=xlWhole)
If Not c Is Nothing Then
c.Offset(0, DateDiff("m", dt, t0) + 1).Interior.Color = vbGreen
c.Offset(0, DateDiff("m", dt, t1) + 1).Interior.Color = vbRed
c.Offset(0, DateDiff("m", dt, t2) + 1).Interior.Color = vbBlack
End If
Next
End Sub
rgT 變量是 sh2 中 A 列的范圍。 它假設整個表格中沒有空白單元格(單元格 A2:D6)。
rgN 變量是 sh1 中 A 列的范圍。
基本上,代碼只是從起始“基准”日期與 sh2 中的 test/test1/test2 中的每個日期獲取月份差異。 在本例中,“基准”是 dt 變量,其值為 01-January-2023。
它循環到 rgT 中的所有單元格,並檢查是否在 rgN 中找到循環的單元格值作為 c 變量,然后用所需的顏色填充所需的單元格。
僅供參考,如果 sh1 看起來像您的圖像,那么您需要為每個 c.offset 添加 2,因為在帶有名稱的單元格和起始“基准”單元格之間有一列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.