Jan 18 2023 04:33 AM
I have a sheet containing HEADINGS & STATUS
The Headings contains particulars of a person
The Status shows Yes or No
Condition1: if all Yes then highlight entire row in GREEN
Condition2: if all No then highlight entire row in RED
Condition3: Yes & No both then highlight entire row in YELLOW
Make function in Excel VBA
Jan 18 2023 05:50 AM
@Vimal_Gaur The conditional formatting for RED/GREEN can be:
=PRODUCT(N($J3:$O3="yes"))
and then highlight the whole table yellow so if RED/GREEN not true then Yellow is left. see attached
Jan 18 2023 05:54 AM
SolutionSub rowcolor()
Dim i, j, k As Long
For i = 3 To 22
j = Application.WorksheetFunction.CountIf(Range(Cells(i, 10), Cells(i, 15)), "yes")
If j = 6 Then
Rows(i).Interior.ColorIndex = 4
Else
k = Application.WorksheetFunction.CountIf(Range(Cells(i, 10), Cells(i, 15)), "no")
If k = 6 Then
Rows(i).Interior.ColorIndex = 3
Else
Rows(i).Interior.ColorIndex = 6
End If
End If
Next i
End Sub
An alternative could be these lines of code. In the attached file you can run the macro for conditional formatting.
Jan 18 2023 06:55 PM
Jan 18 2023 06:58 PM
Jan 18 2023 07:18 PM
Jan 18 2023 07:27 PM
Jan 19 2023 08:13 AM
You can try this code. The number of rows is determined dynamically.
Sub rowcolor()
Dim i, j, k, l As Long
Rows("1:1048576").Interior.ColorIndex = 0
l = Range("A" & Rows.Count).End(xlUp).Row
For i = 3 To l
j = Application.WorksheetFunction.CountIf(Range(Cells(i, 10), Cells(i, 15)), "yes")
If j = 6 Then
Rows(i).Interior.ColorIndex = 4
Else
k = Application.WorksheetFunction.CountIf(Range(Cells(i, 10), Cells(i, 15)), "no")
If k = 6 Then
Rows(i).Interior.ColorIndex = 3
Else
Rows(i).Interior.ColorIndex = 6
End If
End If
Next i
End Sub
Jan 20 2023 08:00 PM
Jan 18 2023 05:54 AM
SolutionSub rowcolor()
Dim i, j, k As Long
For i = 3 To 22
j = Application.WorksheetFunction.CountIf(Range(Cells(i, 10), Cells(i, 15)), "yes")
If j = 6 Then
Rows(i).Interior.ColorIndex = 4
Else
k = Application.WorksheetFunction.CountIf(Range(Cells(i, 10), Cells(i, 15)), "no")
If k = 6 Then
Rows(i).Interior.ColorIndex = 3
Else
Rows(i).Interior.ColorIndex = 6
End If
End If
Next i
End Sub
An alternative could be these lines of code. In the attached file you can run the macro for conditional formatting.