我是VBA的新手,所以我遇到了幾個問題。vba條件格式化到列
我有一個數據集,看起來像這樣:
我不得不塔A比較列B,C,d,E和F,然後着色細胞的字體列乙:F在這些條件下:
- 如果列A中的單元格與列B:F中的單元格相同,則將它們的字體繪製爲橙色。
- 如果列A中的單元格高於列B:F中的單元格,則將它們的字體塗成紅色。
- 如果列A中的單元格低於列B:F中的單元格,則將它們的字體繪製爲綠色。
- 如果A列與其餘列(B:F)之間的絕對差值小於1,則將它們的字體塗成橙色。
我試圖寫一個簡單的宏,所有條件都滿足,除了第四。
這是我的嘗試。
Sub ConditionalFormating()
Dim i, j, a As Double
a = 0.99
i = 2
j = 2
For j = 1 To 6
For i = 2 To 10
ActiveSheet.Cells(i, j).Select
If ActiveSheet.Cells(i, j) - ActiveSheet.Cells(i, 1) >= a Then
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = RGB(255, 156, 0)
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If ActiveSheet.Cells(i, j) - ActiveSheet.Cells(i, 1) <= a Then
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = RGB(255, 156, 0)
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If ActiveSheet.Cells(i, j) > ActiveSheet.Cells(i, 1) Then
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = RGB(0, 255, 0)
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If ActiveSheet.Cells(i, j) < ActiveSheet.Cells(i, 1) Then
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = RGB(255, 0, 0)
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next
Next
End Sub
誰能幫助我?我不明白爲什麼第四種情況在所有其他情況下都沒有得到滿足。
預先感謝您!
順便說一句,該模式屬性指的是對角線,鑽石形狀,點等都是在細胞繪製的老格式化模式。所以,也許你應該只寫Selection.Color = RGB(255,156,0) – z32a7ul
你不需要選擇單元格,它更有效率,如果你只是用ActiveSheet.Cells(i,j)寫入 – z32a7ul
你需要在vba中執行它?正常的條件格式化似乎是爲我做的。 –