Excel.Tips.Net ExcelTips (Menu Interface)

Counting Colors of Cells

Besides using values and text in your worksheets, Excel allows you to use colors to either enliven or provide meaning to your data. If you use colors in your worksheets, you may wonder if there is a way to count the number of cells that are formatted with a particular fill color. There is no intrinsic function in Excel to perform such a task, but you can certainly make one with a user-defined function. The following is an example of one that will count the number of cells in a range that are formatted with a yellow fill color:

Function CountYellow(MyRange As Range)
    Dim iCount As Integer
    iCount = 0
    For Each cell In MyRange
        If cell.Interior.ColorIndex = 6 Then
            iCount = iCount + 1
        End If
    Next cell
    CountYellow = iCount
End Function

To use the function, all you need to do is use a formula such as the following in a cell of your worksheet:


This example returns the number of cells in the range of A1:A99 that use the yellow fill color.

Notice in the CountYellow function that the cells are examined to see if the ColorIndex property is equal to 6. In other VBA coding you may be used to seeing near-English constants that define colors. In this case, the normal color constants don't work. Instead, the ColorIndex property works based on a set of index values into a particular palette of colors. If you are interested in seeing the various index values used for the different colors, take a look at the VBA online help file for the ColorIndex property.

Once you know how to walk through the cells in a range in this manner, it is easy to perform other types of operations based on the color used to fill cells in the range. For instance, instead of simply counting the number of cells, you could add up the values of the cells in the range, or you could find the average of the values in the range. All you need to do is to make the appropriate changes in the code in the innermost If ... End If structure.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (1978) applies to Microsoft Excel 97, 2000, 2002, and 2003.

Related Tips:

Save Time and Supercharge Excel! Automate virtually any routine task and save yourself hours, days, maybe even weeks. Then, learn how to make Excel do things you thought were simply impossible! Mastering advanced Excel macros has never been easier. Check out Excel 2010 VBA and Macros today!


Leave your own comment:

  Notify me about new comments ONLY FOR THIS TIP
Notify me about new comments ANYWHERE ON THIS SITE
Hide my email address
*What is 5+3 (To prevent automated submissions and spam.)
           Commenting Terms

Comments for this tip:

rakesh sharma    14 Dec 2016, 04:10

I need to say:

If any cell is red, then: 0 without any VBA ...i dont know how can i set formula for this
can anyone tell me how can i put formula for colour

I'm looking to do this. Please can you instruct me on this...

cell color is red than I get returned value is 0
Name: rake.png
Heather    24 May 2015, 17:30

How would the following be written?

If cells are x color on sheet 1 then copy to sheet 2

Thank you!
Siahaan    02 Oct 2014, 17:34
check if A1 is filled color (ex.yellow)

please help me to solve this problem using formula

Steve Nadel    28 Mar 2013, 09:20
Sorry for the mutliple comments. Looked at Barry's entry and I already have the text "Application.volatile" inside the macro
Steve Nadel    28 Mar 2013, 09:17
To get the results from the macro, Ineed to do an F9 autocalculate. I look in Options and it is set to automatic, so I am assuimng that the there is VBA script in this macro that calls for manual recalculation that is overwriting this. Anyone have an idea how to get it to autocalc.
Steve Nadel    28 Mar 2013, 09:15
I'm an expert with the program, but a novice with VBA and writing macrso.
The Macro works great. I had a little trouble with the color assignment, but that is not the thing that I am writing about.
I need to do an F9 autocalculate. I look in Options and it is set to automatic, so I am assuimng that the there is VBA script in this macro that calls for manual recalculation that is overwriting this. Anyone have an idea how to get it to autocalc.
Barry Fitzpatrick    19 Dec 2012, 13:16
The line of code:


should be added as the second line, to make the function more responsive to re-calculation of the spreadsheet.

The second parameter is the ColorIndex to be matched. This can have a value from 1-56. A full list of the colors can be found at http://www.automateexcel.com/2004/08/18/excel_color_reference_for_colorindex/
Barry Fitzpatrick    19 Dec 2012, 05:27
The following function (which should be copied to a VBA Module) acts similar to the usual IF function in Excel, but interrogates the colour of the specified cell. The result can be text or a number.

Function IfColour(MyRange As Range, Colour As Integer, Match As Variant, NoMatch As Variant) As Variant

        If MyRange.Interior.ColorIndex = Colour Then
            IfColour = Match
            IfColour = NoMatch
        End If
End Function

To test the colour in cell A1 use the following formula:

=IfColour(A1,6,"Matches", "Doesn't Match")
Jose Geronez    19 Dec 2012, 04:00
This is the "if" formula I want to make in excel:

@ if cell A1 color background is "yellow", then "swift", otherwise " ".

Can this be done?

Thank you.
Mark Coleman    12 Apr 2012, 11:17
OK. After using the site's search function, it is clear that there is not an easy solution for what I want to do. My apologies for not going there first.

Mark Coleman
Mark Coleman    12 Apr 2012, 10:54
I found your article very easy to understand and to use, even though I'm a complete beginner with VBA.

However, when I tried it in a file (Excel 2007) that I use every month, it fails to recognize cells that turned yellow due to a CONDITIONAL FORMATTING event. It only recognizes yellow cells that are made yellow with the FILL command. I already made sure the file was saved in 2007 format (*.xlsm).

Is there a way around this?

If I have to change each cell manually, it defeats the purpose of performing this task in Excel instead of on paper.

Thanks in advance for your time.

Best regards,
Mark Coleman
Brian    31 Jan 2012, 10:19
Thank you.. i found meny differnt formats but this is the only one i could get to work for me. i will have to dig in a little more to see just how to change the colors, but all in all it was very helpfull

Our Company

Sharon Parq Associates, Inc.

About Tips.Net

Contact Us


Advertise with Us

Our Privacy Policy

Our Sites


Beauty and Style




DriveTips (Google Drive)

ExcelTips (Excel 97–2003)

ExcelTips (Excel 2007–2016)



Home Improvement

Money and Finances


Pests and Bugs

Pets and Animals

WindowsTips (Microsoft Windows)

WordTips (Word 97–2003)

WordTips (Word 2007–2016)

Our Products

Helpful E-books

Newsletter Archives


Excel Products

Word Products

Our Authors

Author Index

Write for Tips.Net

Copyright © 2017 Sharon Parq Associates, Inc.