# 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
Application.Volatile
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:

=CountYellow(A1:A99)

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:

Create Custom Apps with VBA! Discover how to extend the capabilities of Office 2013 (Word, Excel, PowerPoint, Outlook, and Access) with VBA programming, using it for writing macros, automating Office applications, and creating custom applications. Check out Mastering VBA for Office 2013 today!

Heather    24 May 2015, 17:30
Hello,

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)

regards
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:

Application.volatile

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
Else
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.

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
thanks

 *Name: Email: Notify me about new comments ONLY FOR THIS TIP Notify me about new comments ANYWHERE ON THIS SITE Hide my email address *Text: *What is 4+5 (To prevent automated submissions and spam.)

# Our Company

Sharon Parq Associates, Inc.

# Our Sites

Tips.Net

Beauty and Style

Cars

Cleaning

Cooking

ExcelTips (Excel 97–2003)

ExcelTips (Excel 2007–2013)

Gardening

Health

Home Improvement

Money and Finances

Organizing

Pests and Bugs

Pets and Animals

WindowsTips (Microsoft Windows)

WordTips (Word 97–2003)

WordTips (Word 2007–2013)

Excel Products

Word Products

# Our Authors

Author Index

Write for Tips.Net