如何根据条件对单元格进行颜色编码?
How to colorcode cells based on conditions?
我试图让这个循环重复从 O14:P434 开始的两行。我希望它在整个范围内为 运行,但仅当 P 列中有值时才应用着色。
For loopctr = 14 To 434
Dim gooddate As String
goodate = "O14"
Dim baddate As String
baddate = "P14"
If baddate > gooddate Then
Range("P14").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next
我的循环不起作用,我如何使它 运行 一直到那些行。
我通过条件格式和记录创建它的宏让它工作。
听起来您只需要使用条件格式来设置突出显示单元格规则以突出显示大于或小于的单元格。或者您可以使用公式设置更复杂的规则,方法是选择更多规则,然后选择 "Use a formula to determine which cells to format."
在重新安排日期列 (P14) 的第一个单元格上设置您的规则,将其与收据列 (O14) 的第一个单元格进行比较,如果您对结果满意,请使用格式刷复制重新安排日期列的其余单元格的格式。
您需要两条规则。以下是有关如何在单元格 P14 上设置它们的屏幕截图:
将格式绘制到所有单元格后,最终结果应如下所示:
希望我能正确理解你的问题。你不需要变量,但如果你想要它们,你需要在循环之外创建它们。在此代码中,x 是随着每个循环不断变化的行,15、16 是 O 和 P 列。
For x = 14 To 434
If CDate(Cells(x,16).Value) > CDate(Cells(x,15).Value) Then
With Cells(x,16).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
End With
End If
Next x
这是一个基本的 VBA 解决方案;您的列 headers 在第 1 行,并且该列中可能有空白单元格;此宏会将 Reschedule date
列中的日期与左侧列中的日期进行比较。如果日期晚于左列中的日期,它将为单元格 Red
着色。如果日期早于左列中的日期,它将为单元格 Green
着色。见附图...
Dim tCol As Long, cel As Range
With Worksheets("Sheet2")
'use find to identify the column number
tCol = .Rows(1).Find("Reschedule date", , xlFormulas, xlWhole, xlByRows, xlPrevious).Column
'loop through each cell in the column from row to the last used row
For Each cel In .Range(.Cells(2, tCol), .Cells(.Rows.Count, tCol).End(xlUp))
'test each cel; if not empty and the cel value is less then the
'value of the cell on the left, then color the cel green
If cel.Value <> "" And cel.Value < cel.Offset(, -1).Value Then
cel.Interior.ColorIndex = 4
'elseif test each cel; if not empty and the cel value is greater then the
'value of the cell on the left, then color the cel red
ElseIf cel.Value <> "" And cel.Value > cel.Offset(-1).Value Then
cel.Interior.ColorIndex = 3
End If
Next cel 'loop to the next cel
End With
对于与 @GMalc's 等效的数据和结果,以下 CF 公式规则有效:
红色:=C1>B1
,绿色:=AND(C1<>"",C1<B1)
如果应用于 ColumnC。申请CF的详情here。
我试图让这个循环重复从 O14:P434 开始的两行。我希望它在整个范围内为 运行,但仅当 P 列中有值时才应用着色。
For loopctr = 14 To 434
Dim gooddate As String
goodate = "O14"
Dim baddate As String
baddate = "P14"
If baddate > gooddate Then
Range("P14").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next
我的循环不起作用,我如何使它 运行 一直到那些行。 我通过条件格式和记录创建它的宏让它工作。
听起来您只需要使用条件格式来设置突出显示单元格规则以突出显示大于或小于的单元格。或者您可以使用公式设置更复杂的规则,方法是选择更多规则,然后选择 "Use a formula to determine which cells to format."
在重新安排日期列 (P14) 的第一个单元格上设置您的规则,将其与收据列 (O14) 的第一个单元格进行比较,如果您对结果满意,请使用格式刷复制重新安排日期列的其余单元格的格式。
您需要两条规则。以下是有关如何在单元格 P14 上设置它们的屏幕截图:
将格式绘制到所有单元格后,最终结果应如下所示:
希望我能正确理解你的问题。你不需要变量,但如果你想要它们,你需要在循环之外创建它们。在此代码中,x 是随着每个循环不断变化的行,15、16 是 O 和 P 列。
For x = 14 To 434
If CDate(Cells(x,16).Value) > CDate(Cells(x,15).Value) Then
With Cells(x,16).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
End With
End If
Next x
这是一个基本的 VBA 解决方案;您的列 headers 在第 1 行,并且该列中可能有空白单元格;此宏会将 Reschedule date
列中的日期与左侧列中的日期进行比较。如果日期晚于左列中的日期,它将为单元格 Red
着色。如果日期早于左列中的日期,它将为单元格 Green
着色。见附图...
Dim tCol As Long, cel As Range
With Worksheets("Sheet2")
'use find to identify the column number
tCol = .Rows(1).Find("Reschedule date", , xlFormulas, xlWhole, xlByRows, xlPrevious).Column
'loop through each cell in the column from row to the last used row
For Each cel In .Range(.Cells(2, tCol), .Cells(.Rows.Count, tCol).End(xlUp))
'test each cel; if not empty and the cel value is less then the
'value of the cell on the left, then color the cel green
If cel.Value <> "" And cel.Value < cel.Offset(, -1).Value Then
cel.Interior.ColorIndex = 4
'elseif test each cel; if not empty and the cel value is greater then the
'value of the cell on the left, then color the cel red
ElseIf cel.Value <> "" And cel.Value > cel.Offset(-1).Value Then
cel.Interior.ColorIndex = 3
End If
Next cel 'loop to the next cel
End With
对于与 @GMalc's
红色:=C1>B1
,绿色:=AND(C1<>"",C1<B1)
如果应用于 ColumnC。申请CF的详情here。