[英]How to format all cells in one sheet based on corresponding cell values in another sheet using XlsxWriter?
[英]Highlight cells in a sheet based on corresponding cell values in another sheet with a macro
正如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.