VBA Code to Count Color Cells With Conditional Formatting

Complete Excel VBA Course

Have you ever got into situation in office where you need to count the cells with specific color in conditional formatted Excel sheet? If yes then you can use following code which counts the number of cells with specific color (here it is yellow) and put the count in cell

Count Color Cells
Public Sub CountColorCells()
    'Variable declaration
    Dim rng As Range
    Dim lColorCounter As Long
    Dim rngCell As Range
    'Set the range
    Set rng = Sheet1.Range("A2:A11")
    'loop throught each cell in the range
    For Each rngCell In rng
        'Checking Yellor color
        If Cells(rngCell.Row, rngCell.Column).DisplayFormat.Interior.Color = RGB(255, 255, 0) Then
            lColorCounter = lColorCounter + 1
        End If
    Next
    'Display the value in cell A12
    Sheet1.Range("A12") = lColorCounter
End Sub

Count Color Cells With Conditional Formatting

It is worth to mention that DisplayFormat.Interior.Color works only on Excel 2010 or above. Also the above code does not count the cells where cell color is manually changed by user. You can use .Interior.Color to get the cell colors or read this post.

To use this code in your Excel file, follow below steps:
1. Open the Excel file where you want to count the color cells
2. Press Alt+F11
3. Insert a Module (Insert>Module) from menu bar
4. Paste the code in the module
5. Now add a shape in Excel sheet
6. Give a name to the shape like ‘Refresh Count’

Complete Excel VBA Course

7. Right click on the shape and select ‘Assign Macro…’

8. Select CountColorCells from the list and click on ‘Ok’ button

count color cells

9. Done

Here I have counted the cells with yellow color. You can change RGB (#,#,#) code to count other colors. You can find RGB codes of any color using following steps:

1. Select the cell which contain the color you want to count

2. Right click and select ‘Format Cells…’

3. In the Format Cells dialog box go to ‘Fill’ tab and click on ‘More Colors…’

4. That’s all, in the ‘Color’ dialog box, you can view the RGB (Red, Green, Blue) codes of the color

If you are look for a code to sum the cells based on it’s color then you can read this post.

Download Practice File

You can also practice this through our practice files. Click on the below link to download the practice file.

Recommended Articles

Similar Posts

5 Comments

  1. Natasha Stephens says:

    Any way to make this a function not a sub

    1. Hi Natasha,

      It is not possible to access Interior property of Cells in Excel when using the code as Excel Function / Formula; hence the code needs to be manually called using a button.

      Regards
      ExcelSirJi Team

  2. Is there a way to span this macro to be applied to 25 different sheets in a workbook?

    1. Hi Bob,

      You can make use of following code to loop through each worksheet in the workbook and count the number of cells with conditional formatting.

      Public Sub CountColorCells()
          'Variable declaration
          Dim rng As Range
          Dim lColorCounter As Long
          Dim rngCell As Range
          Dim wksSheet As Worksheet
          
          For Each wksSheet In ThisWorkbook.Worksheets
              'Set variable value to zero
              lColorCounter = 0
              'Set the range
              Set rng = wksSheet.Range("A2:A11")
              'loop throught each cell in the range
              For Each rngCell In rng
                  'Checking Yellor color
                  If wksSheet.Cells(rngCell.Row, rngCell.Column).DisplayFormat.Interior.Color = RGB(255, 255, 0) Then
                      lColorCounter = lColorCounter + 1
                  End If
              Next
              'Display the value in cell A12
              wksSheet.Range("A12") = lColorCounter
          Next
          
      End Sub
  3. Hi There,

    I want to count the conditionally formatted RED colored cells but its not working…

    Range : D40 to D70
    Sample Cell : K40
    Total Cells : L40

Leave a Reply

Your email address will not be published. Required fields are marked *