簡體   English   中英

使用宏根據另一個工作表中的相應單元格值突出顯示工作表中的單元格

[英]Highlight cells in a sheet based on corresponding cell values in another sheet with a macro

我想創建一個宏,該宏將基於另一個工作表值突出顯示工作表的某些單元格。

我的 excel 文件中有兩張表格:

檢查”和“公式

我想要一個宏,如果工作表“公式”中的相應單元格標記為“失敗”,則用紅色突出顯示工作表“檢查”中的單元格。

注意:列數不是靜態的(它們的列數沒有固定結構,可以是 4 ,5,6 等)

我提供了截圖以便更好地理解:

檢查表中的單元格將突出顯示為紅色

如果 FAIL 出現在公式表中,則應突出顯示其他表中的相應值

正如Fane所提到的,這可以使用條件格式輕松完成,使用一個簡單的公式:

 =(Formula!A1="FAIL")

您選擇要應用此格式的所有單元格並填寫該公式,如以下屏幕截圖所示:

在此處輸入圖像描述

如果您說“但我不希望在第二列中出現 True, False”,您不需要:當我根據公式創建條件格式時,我總是在臨時幫助列中檢查我的公式並且之后刪除它:-)

如果您不喜歡條件格式,請使用下一個 VBA 代碼。 它將要處理的范圍(從)放在一個數組中,在所有數組元素之間迭代,並在最后創建一個要着色的Union范圍:

Sub HighlightCells()
 Dim shCh As Worksheet, shF As Worksheet, lastR As Long, lastCol As Long
 Dim rngF As Range, arrH, i As Long, j As Long, rngFAIL As Range
 
 Set shCh = Sheets("Check") 
 Set shF = Sheets("Formula")
 lastR = shCh.Range("A" & shCh.rows.count).End(xlUp).row
 lastCol = shCh.cells(1, shCh.Columns.count).End(xlToLeft).column
 
 Set rngF = shCh.Range("A2", shCh.cells(lastR, lastCol))
  rngF.Interior.Color = xlNone 'clear the previous coloring
 arrH = shF.Range("A2", shF.cells(lastR, lastCol)).Value2
 
 For i = 1 To UBound(arrH)
    For j = 1 To UBound(arrH, 2)
        If arrH(i, j) = "FAIL" Then
            Set rngFAIL = addToFAIL(rngF.cells(i, j), rngFAIL)
        End If
    Next j
 Next i
 If Not rngFAIL Is Nothing Then rngFAIL.Interior.Color = vbRed
End Sub

Function addToFAIL(rng As Range, rngFAIL As Range) As Range
  If rngFAIL Is Nothing Then
        Set addToFAIL = rng
  Else
        Set addToFAIL = Union(rngFAIL, rng)
  End If
End Function

但這不是動態的,因為它是......

為了動態,您可以將其放置在“公式”表的事件中,具體取決於值(FAIL)的更改方式...可能, Calculate更改是否發生在公式中,因為表名稱讓我們假設.

如果要返回的Union范圍很大,則代碼速度可能會顯着降低,但即使在這種情況下,也可以創建范圍單元格的(數量)限制並逐步為必要的單元格着色。

暫無
暫無

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

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