Can i count cells by color in excel


  • — By
    Sumit Bansal

Watch Video – How to Count Colored Cells in Excel

Wouldn’t it be great if there was a function that could count colored cells in Excel?

Sadly, there isn’t any inbuilt function to do this.

BUT..

It can easily be done.

How to Count Colored Cells in Excel

In this tutorial, I will show you three ways to count colored cells in Excel (with and without VBA):

  1. Using Filter and SUBTOTAL function
  2. Using GET.CELL function
  3. Using a Custom Function created using VBA

#1 Count Colored Cells Using Filter and SUBTOTAL

To count colored cells in Excel, you need to use the following two steps:

  • Filter colored cells
  • Use the SUBTOTAL function to count colored cells that are visible (after filtering).

Suppose you have a dataset as shown below:

Count Colored Cells in Excel - Dataset

There are two background colors used in this data set (green and orange).

Here are the steps count colored cells in Excel:

  1. In any cell below the data set, use the following formula: =SUBTOTAL(102,E1:E20)
    Using Subtotal function to Count Colored Cells in Excel
  2. Select the headers.
  3. Go to Data –> Sort and Filter –> Filter. This will apply a filter to all the headers.
  4. Click on any of the filter drop-downs.
  5. Go to ‘Filter by Color’ and select the color. In the above dataset, since there are two colors used for highlighting the cells, the filter shows two colors to filter these cells.Using Filter to Count Colored Cells in Excel

As soon as you filter the cells, you will notice that the value in the SUBTOTAL function changes and returns only the number of cells that are visible after filtering.Count Cells with a background color - Filtered Cell Count Subtotal

How does this work?

The SUBTOTAL function uses 102 as the first argument, which is used to count visible cells (hidden rows are not counted) in the specified range.

If the data if not filtered it returns 19, but if it is filtered, then it only returns the count of the visible cells.

Try it Yourself.. Download the Example File

#2 Count Colored Cells Using GET.CELL Function

GET.CELL is a Macro4 function that has been kept due to compatibility reasons.

It does not work if used as regular functions in the worksheet.

However, it works in Excel named ranges.

See Also: Know more about GET.CELL function.

Here are the three steps to use GET.CELL to count colored cells in Excel:

  • Create a Named Range using GET.CELL function
  • Use the Named Range to get color code in a column
  • Using the Color Number to Count the number of Colored Cells (by color)

Let’s deep dive and see what to do in each of the three mentioned steps.

Creating a Named Range

Getting the Color Code for Each Cell

In the cell adjacent to the data, use the formula =GetColor

This formula would return 0 if there is NO background color in a cell and would return a specific number if there is a background color.

This number is specific to a color, so all the cells with the same background color get the same number.Count Colored Cells in Excel - Color Code

Count Colored Cells using the Color Code

If you follow the above process, you would have a column with numbers corresponding to the background color in it.

To get the count of a specific color:

  • Somewhere below the dataset, give the same background color to a cell that you want to count. Make sure you are doing this in the same column that you used in creating the named range. For example, I used Column A, and hence I will use the cells in column ‘A’ only.
  • In the adjacent cell, use the following formula:

=COUNTIF($F$2:$F$20,GetColor)

This formula will give you the count of all the cells with the specified background color.Count Colored Cells in Excel - Color Count without VBA

How Does It Work?

The COUNTIF function uses the named range (GetColor) as the criteria. The named range in the formula refers to the adjacent cell on the left (in column A) and returns the color code for that cell. Hence, this color code number is the criteria.

The COUNTIF function uses the range ($F$2:$F$18) which holds the color code numbers of all the cells and returns the count based on the criteria number.

Try it Yourself.. Download the Example File

#3 Count Colored Using VBA (by Creating a Custom Function)

In the above two methods, you learned how to count colored cells without using VBA.

But, if you are fine with using VBA, this is the easiest of the three methods.

Using VBA, we would create a custom function, that would work like a COUNTIF function and return the count of cells with the specific background color.

Here is the code:

'Code created by Sumit Bansal from https://trumpexcel.com
Function GetColorCount(CountRange As Range, CountColor As Range)
Dim CountColorValue As Integer
Dim TotalCount As Integer
CountColorValue = CountColor.Interior.ColorIndex
Set rCell = CountRange
For Each rCell In CountRange
  If rCell.Interior.ColorIndex = CountColorValue Then
    TotalCount = TotalCount + 1
  End If
Next rCell
GetColorCount = TotalCount
End Function

To create this custom function:

To use this function, simply use it as any regular excel function.

Syntax: =GetColorCount(CountRange, CountColor)

  • CountRange: the range in which you want to count the cells with the specified background color.
  • CountColor: the color for which you want to count the cells.

To use this formula, use the same background color (that you want to count) in a cell and use the formula. CountColor argument would be the same cell where you are entering the formula (as shown below):

Count Colored Cells in Excel - Custom Formula

Note: Since there is a code in the workbook, save it with a .xls or .xlsm extension.

Try it Yourself.. Download the Example File

Do you know any other way to count colored cells in Excel?

If yes, do share it with me by leaving a comment.

You May Also Like the Following Excel Tutorials:

  • Count Cells that Contain Text
  • How to Sum by Color in Excel (Formula & VBA)
  • Filter Cells with Bold Font Formatting
  • How to Format Partial Text Strings using VBA
  • Highlight EVERY Other ROW in Excel (using conditional formatting).
  • How to Quickly Highlight Blank Cells in Excel.
  • How to Compare Two Columns in Excel.

Excel Ebook Subscribe

Get 51 Excel Tips Ebook to skyrocket your productivity and get work done faster

67 thoughts on “How to Count Colored Cells in Excel – A Step by Step Tutorial + Video”

  1. I’m noticing that the VBA method doesn’t work with conditional formatting of background colors. Any workaround for hat?

    • I have the same issue

  2. Hi, I am using the VBA module to count preferred meeting session times, it was working OK – until I added a separate VBA module called CounxlDiagonalDown to count diagonal borders (people who have indicated they are not attending said meeting), and now I am getting a #NAME? syntax error on the GetColorCount. any suggestions on a fix? Thanks

  3. Thanks, your VB macro works perfectly!!

  4. Great stuff, but the VB does not work on conditional formatting.. only if you manually change the background color of cells. Have any idea to count backgrounds with conditional formating?

  5. Thank you so much. Just what I needed.

  6. Great vba function! Very useful. I change the ‘interior’ to ‘font’ and it works nicely when counting range with different font colors. However, I tried it to conditional formatting and it didn’t work. Any idea, why?

  7. Does this work with horizontal range. Doesnt seem to be working in mine with an horizontal range

  8. Fantastic video and article. Very helpful and simple to follow. Thank you!

  9. Simple and straight forward. This did the job. Thank you!

  10. I have a set of two ranges with compassion:
    Say my A2:A10 with data of
    B2:B10 with data of
    I applied function in C2 and draged upto C10<=if(isna(Match($A$2:$A$10,$B$2:$B$10,0)),A2,» «)
    Which give me the result as (this result says not shared number of Set A2:A10 to B2:B10)
    Now I coloured Full set of A2:A10 and also B4 and B9 as yellow and I need the out put in C2 to C10 as

    Can any body help me to fix this problem

  11. (VBA Solution)
    Too good to be true…just throws the standard formula error (“not trying to type a formula etc.”

  12. Thank you so much, this solve my problems.

  13. The code in the screen shot of the VBA has errors

  14. Help! Is there anyway to modify this VBA so that it works for =max

  15. GOOD TRICKS FOR COUNTING BY COLOUR

  16. tried =SUBTOTAL(102,$E$2:$E$20) and didn’t work. waste of time

  17. Is there a way to count the cells by color but also having a criteria?. For example I want to count the cells in a column that are colored grey but only the ones that have an specific value on them like having the word “unique” in the cell.

    I would really appreciate the help thanks

    • I know this is kind of a ghetto solution, but:
      I just copied the unique cells I needed to a different worksheet and did the function there, it worked perfectly

  18. Great code. However, it does not automatically update, unless I click on the cell each time. Please note, I have excel set to automatically update calculations, so not sure why not working.

  19. The VBA function worked great!! I’m now showing off to anyone in the office who will listen! Thanks very much

  20. Hello! I cannot get my get.cell (38,…) to work. Is there any chance I could contact you?

    • Can you please try with ; instead of , ? It work for me.

  21. Using VBA was perfect! Thanks

  22. I’m using your VBA method, and it works just fine, but is there any way to make it work for cells that have RGB color values instead of the standard ones from the color palette? Using .ColorIndex only works for those types of colors

  23. Hi,
    The function option works fine, there is only one thing. As soon as one of the colours changes the sum won’t refresh, is there an way to sort this out ?

    • Delete the module > save > close and reopen file > add the module again > click on any cell with the formula > press “enter”

    • Push F2.
      Push Enter.

  24. Is there a way to apply this to rows rather than columns?!

  25. The VBA formula worked great on my spreadsheet. But, I saved it and re-opened and now all the cells where I had formulas say #Name?. I checked and the code is still in the module. It comes up in the list when I begin to type =getcolorcount. I tried removing the Code and re-inserting and can’t get the formula to work any longer. I’m using Excel 2010, is there any reason this suddenly wouldn’t work now?

    Please help – this formula was perfect for my spreadsheet for work because I didn’t want to have to add another column to the spreadsheet to get this to work.

    Thanks,
    Jana

  26. Does this work in an online excel sheet?

  27. Hi,
    Thanks for the VBA code, I used your code and it works perfect – it counts the colored cells, but it does not update automatically. If a new cell is colored, everyctime I have to click on the formula to have it update the count.
    Is there any other way to get this automated when a new cell is colored?
    Appreciate your response

  28. I’ve used your VB method and it works great, thank you so much! I do have an issue though that I’m having troubles resolving…

    I’m using your formula as part of a calendar to track equipment utilization by filling the cells with color when the equipment is used. The problem I’m having is that the formula does not automatically recalculate when new colored cells are entered. It does recalculate when you click on the cell containing the formula and press enter, but I’ve got hundreds of assets that I’m tracking and that’s not an efficient way of doing it.

    I’ve tried all the usual, F9, recalculate formula, recalculate worksheet, etc. nothing works. I’ve even recorded Macros of actually highlighting all formula cells and clicking enter. It works when I do it, but the macro returns a value error when used.

    Do you have a work around for this or another VB Macro that can be assigned to a radio button to recalculate the colored cell totals each time the calendar is updated?

    • Ctrl-Alt-F9

  29. I found this article very useful, yet the VBA functions didn’t work. I have a table with various data, I used the conditional formatting in one column and built 5 rules and based on that cells have been colored in greed, red and yellow…any thoughts?

    • I have come across 5 functions that count coloured cells such as this code, and none of them work on conditional formatting.

  30. I have used your following code and it works perfectly:

    Function GetColorCount(CountRange As Range, CountColor As Range)
    Dim CountColorValue As Integer
    Dim TotalCount As Integer
    CountColorValue = CountColor.Interior.ColorIndex
    Set rCell = CountRange
    For Each rCell In CountRange
    If rCell.Interior.ColorIndex = CountColorValue Then
    TotalCount = TotalCount + 1
    End If
    Next rCell
    GetColorCount = TotalCount
    End Function

    But, now I want to do a little more. For the range of cells, I want to have 4 separate functions. 1) Count cells IF they are a particular color, as well as ending in “*o” 2) Count cells IF they are a particular color, as well as ending in “*s” 3) Count cells IF they are a particular color, as well as having 2 text characters in the cell, “??” and 4) Count cells IF they are a particular color, as well as having a number greater than zero in the cell, “>0”. How can I modify the base “GetColorCount” code to incorporate this additional parameter for each instance?

  31. I tried using your 3rd option but I am thinking that I am not right in doing so. Here is what I have and what I am trying to do. I have a spreadsheet with my supervisors and their clock-in times that I export from our schedule and then copy & paste into workbook. I color each row based on if they were on time, late but the time rolled back (7 minute grace period) and late but jumped forward 1/4 hour. I then filter by the supervisor’s last name and then by the “ErrorLog” header, checking only CLOCK IN & LATE CLOCK IN. The “Clock In” option could be either green (on time) or orange (late but rolled back) and then Late Clock In is yellow. The entire ErrorLog column is K10:K118, for all supervisors. Obviously when I sort by both Last Name and ErrorLog headers it reduces the number of rows and hides all the rest. I just want the formula to count each color that is visible. Is what I am doing even possible? I want to be able to change up the filter a bit by changing the Last Name so that I can only see each supervisor individually.

  32. Great video…. I do have a question for you… I used your code and it works perfect except for one thing, it counts the colored cells, but it does not update automatically. If a new cell is colored, I have to click on the formula to have it update the count. Is there a code I can add to have it update automatically once a new colored cell is added? Thanks again for a great video!!!

  33. Your VBA solution works BUT NOT with colors from “Conditional Formating.”

    I have 17 cells in a column, all under a conditional formatting to turn the cell color “light red” if a certain condition is met. There are only 3 cells that are “light red” (meeting the condition) but your VBA script returns an answer of “17”, meaning it considers all cells “light red”. Then I manually went in and colored one cell (not already highlighted by the conditional formatting) blue, and your VBA returned an answer of “16”. Clearly then, it does not recognize the results of conditional formatting, only “manually entered” colors.

    Any solution? This is critical as the colored cells will be different depending on what conditions are met. I need a way to count them per each condition.

    (I learned a lot about adding a custom VBA code. Thanks!)

    • Same issue! Any suggestions?

    • Was there any answer to this question? thanks.

  34. Hi,
    can you use both GetColorCount and Sumbycolor VBA in the same worksheet.

  35. Can you please explain what is 38 mentioned in the name manager formula? What does it relate to?

    • If you follow the link to more information about Get.Cell it tells you, I was wondering the same thing.

  36. When i press ‘enter’ with you’r download exel i get #NAME? why? PS ; I am new in VBA

  37. Hi, please assist. if the cell is in cf it doesn’t count. i am using also the standard cf for date occuring.

    • Hey Mart.. Yes this doesn’t work when conditional formatting is in play. IF you want to count based on CF rules, you can use the same rule you have used to apply conditional formatting and count the total values. For example, if you use CF to highlight cells that contain “Yes”, then use a COUNTIF function to count all these cells.

  38. How can you accomplish the same thing except counting cells in a row versus column (as outlined here)? For example, I want to know how many of each color (Red, Yellow, Green, and no color) are in row 2 (range – A2:I2).
    Side note/issue: The Subtotal function seems to only count cells that have something in them. I would like to count cells that are just a color without any text in the cell. Is that possible?
    Thanks for your help.

    • I am looking for this answer as well. I need the count of cells from a bigger range a2:bz52. And some cells are merged. Is there a way for this? Thank you in advance! Zita

  39. I liked the VBA option, works like a charm. However if my data range is non-continuous , for example, instead of A1:A10, I need to count the cell color in A1, A4, A9, How should I modify the formula? Thanks.

    • Hi Azz,
      Enclose your non-continuous range within brackets inside the function, (x, y, z, a:c), so for your example, you would use:

      =GetColorCount( ( A1, A4, A9 ), 50 )

      Where,
      50 = Green box color index.

  40. If declared strictly and with names more appealing (IMO ;)). Thank you for the code and the idea behind

    Public Function GetColorCount(ByRef Target As Excel.Range, ByRef rgColor As Excel.Range) As Long
    Dim rCell As Excel.Range
    Dim Color As Long
    Dim lgCounter As Long

    Color = rgColor.Interior.ColorIndex
    For Each rCell In Target
    If rCell.Interior.ColorIndex = Color Then lgCounter = lgCounter + 1
    Next rCell
    GetColorCount = lgCounter
    End Function

  41. Hi,

    I started using your Count Cells Based on Background Color in Excel #3 using VBA. This wors very good. Thanks for it.
    But now I have a problem using the same function by checking cells where the background color is set by Conditional Formatting. I am checking for dates older than today() and mark these cells in red background; works well using conditional formatting but the count doesn’t work for these cells.
    thank you for any idea or hint

    • Hi Nico,

      Do you use a formula in your conditional formatting (CF)?
      If you do, it returns TRUE and you are coloring the cells that meet that condition. This means that if you put the CF formula into a COUNTIF formula, you can count the cells that meet the CF conditions!

      Gr,
      Raymond.

      • Hi Raymond,

        No I’m not using a formula. I use a standard rule type: Cell Value “less than or equal to” =$A$1
        In A+ I only update the day =today().
        thx
        Nico

        • Nico,

          I did a test and I realised I needed a help column to do the job.

          Say that range A2:A10 has your values where you apply the CF to.
          Formula in help column B:
          in B2 put ‘=OR(A2<$A$1,A2=$A$1)’, copy down and you will get a couple of TRUEs or FALSEs.

          The count formula anywhere can then be: =COUNTIF(B2:B10,TRUE).

          Or you can just use an IF formula in the help column, giving you 1 or 0 back. Then a simple SUM somewhere and there you are.

          I must be do-able without the help column but I don’t know how (yet)!

          Raymond

          • Hi Raymond,

            A help column isn’t very usefull and would need many additional help columns, so I searched and searched.
            On http://www.excel-inside.de (a german Excel & VBA site) I found an example using .Font.ColorIndex . With this information I found .Interior.ColorIndex and my day was made 🙂

            Next step: searching for the color indexes on https://msdn.microsoft.com/en-us/library/office/ff840443.aspx

            and it seems to work – refreshing manually after changes – but it works:
            ‘Function ColorRed(Area As Range)
            ‘ColorRed = 0
            ‘For Each cell In Area
            ‘If cell.Interior.ColorIndex = 3 Then
            ‘ColorRed = ColorRed + cell.Count
            ‘End If
            ‘Next
            ‘End Function
            Nico

          • Hi Nico,

            Thanks for the update and also for you providing the resources that led to the solution you found!

            An UDF (User Defined Function) is harmless in your case because you are using it in only one cell to get the count. So that’s great.
            In complex workbooks, where formulas must be in several rows, UDF’s are not recommanded unless no other choice because they make the workbook slow.
            And as they say, there is always another way, a simple, faster and stronger way…

            I found a non-vba solution: an array formula.

            Put the following formula adjusted to your needs where you want your count.
            In this example, I assume the IF statement is the same as in your conditional format that gives the cells a red color when TRUE. The formula says:
            for each cell in range A2:A10, if the cell value is equal or less than the value of A1, give 1, otherwise give 0. Then give a sum of all the individual results.
            I’ve used 1 IF with an OR but it didn’t work so it became 2 IF’s.

            Instead of just pressing ENTER, press CTRL+SHIFT+ENTER to make it an array formula, which you can recognize by the { } that Excel automatically puts around it:
            =SUM(IF(A2:A10<$A$1,1,IF(A2:A10=$A$1,1,0)))

            So after CTRL+SHIFT+ENTER, you will see:
            {=SUM(IF(A2:A10<$A$1,1,IF(A2:A10=$A$1,1,0)))}

            No more manual refresh!

            More about the topic:
            http://www.cpearson.com/excel/arrayformulas.aspx

            Gr,
            Raymond.

          • i am not a vbe user but this explanation was clear enough to take the dive;
            so i tried solution number 3 and it works!
            however, how can i make the sheet update the numbers after i changed the color of a cell? at this moment i need to go to this cell en hit enter;
            there must be a ‘trick’ to do this on my imac!

          • Hi Cezi,

            The only workaround I could came up with involves 2 steps:
            [1] Put ‘Application.Volatile True’ at the beginning of the the function code
            [2] Put the following code in the worksheet event area (it assumes that you want an update if you select any cell in range [A1:A10]; please adjust accordingly):

            Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            ‘Application.StatusBar = False
            On Error Resume Next ‘To avoid error if the selection isn’t in [A1:A10]
            If Target.Address = Intersect(Target, Range(“A1:A10”)).Address Then
            ActiveSheet.Calculate
            ‘Application.StatusBar = “Calculated”
            End If
            End Sub

            Gr,
            Raymond.

          • Hello Raymond, I am having the same issue but am not exactly sure how to follow the workaround you posted.

            [1] Should I paste ‘Application.Volatile True’ after the following row?

            ‘Function GetColorCount(CountRange As Range, CountColor As Range)’

            [2] Where should I put the code you have entered? I’m afraid I don’t know what the “worksheet event area” is or where I can find it.

            Thank you for your patience and a great guide!

            /Kara

          • Raymond,

            Your code for the workaround however disables copying and pasting? Do you know how to fix this?

            -Amy

          • Hi Amy,

            Sorry about that. Yes, there is a fix. The first line of code should be:
            If Application.CutCopyMode Then Exit Sub

            So, the final worksheet ‘SelectionChange’ event should look like this:
            [CODE]
            Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            ‘If we are copying, do nothing and exit
            If Application.CutCopyMode Then Exit Sub

            On Error Resume Next ‘To avoid error if the selection isn’t in [A1:A10]
            If Target.Address = Intersect(Target, Range(“A1:A10”)).Address Then
            ActiveSheet.Calculate
            End If
            End Sub
            [END CODE]

            -Raymond

Comments are closed.

You have probably used color coding in your Excel data or seen it in a workbook you had to use.

It’s a popular way to visualize your data!

While colored cells are a great way to highlight data to quickly grab someone’s attention, they are not a great way to store data.

Unfortunately, a lot of users will color a cell to indicate some value instead of creating another data point with the value.

For example, they might color a cell green to indicate an item is approved instead of creating another data point with the text Approved.

This causes a lot of problems when you actually need to find out how many items were approved. Excel doesn’t offer a built-in way to count colored cells.

In this post, I’ll show you 6 ways to find and count any colored cells in your data.

Use the Find and Select Command to Count Colored Cells

Excel has a great feature that allows you to find cells based on the format. This includes any colored cells too!

You can find all the cells of a certain color, then count them.

Go to the Home tab ➜ click on the Find & Select command ➜ then choose Find from the options.

There is also a great keyboard shortcut for this. Press Ctrl + F to open the Find and Replace menu.

Click on the small down arrow in the Format button and select Choose Format From Cell.

Clicking on the main part of the Format button will open up the Find Format menu where you can select any combination of formatting to search for.

This is perfect if you know exactly what color you are searching for, but more often you will be best served by setting the format by example. Formatting could be subtilty different and this might cause you to miss finding the right data!

When you click on the small arrow inside the Format button, it will reveal more options including the ability to set the format by selecting a cell.

Once you have the format selected then click on the Find All button.

The lower part of the Find and Replace dialog box will show all the cells that were found matching the formatting and in the lower left you will find the count.

Press Ctrl + A to select all the cells and then press the Close button and you can then change the color of all these cells or change any other formatting.

If you only want to return cells in a given column, or range, this is possible. Select the range in the sheet before pressing the Find All button to limit the search to the selection.

Pros

  • Easy to use.
  • You can use this to search for other types of formatting and not just fill color.
  • You can use this to search a selected range, the entire sheet or the entire workbook.

Cons

  • This solution is not dynamic and will need to be repeated each time you want to get the count.

Use Filters and the Subtotal Function to Count Colored Cells

This method will rely on the fact that you can filter based on cell color.

First step, you will need to add filters to your data.

Select you data and go to the Data tab then choose the Filter command.

This will add a sort and filter icon to each column heading of your data and these will allow you to filter your data many different ways.

There is also a handy keyboard shortcut for adding or removing filters from your data. Select your data and press Ctrl + Shift + L on your keyboard.

Another option for adding filters is to turn your data into an Excel Table. I wrote a post all about Excel tables and the great features they come with.

You can convert your data into a table with either of these two methods.

  • Select a cell inside your data ➜ go to the Insert tab ➜ click on the Table command.
  • Select a cell inside your data ➜ press Ctrl + T on your keyboard.

You table should come with filters by default. If not, go to the Table tab and check the Filter Button option in the Table Style Options section.

= SUBTOTAL ( 3, Orders[Order ID] )

Now you can add the above SUBTOTAL formula to count the non empty cells where Order ID is the column which contains the colored cells you would like to count.

The first argument of the SUBTOTAL function tells it to return a count while the second argument tells it what to count.

The special trick here is that the SUBTOTAL function will only count visible cells, so it will update the count based on what data it is filtered on.

This means you can filter on the colored cells and you will get a count of those colored cells!

Now you can filter your data by color.

  1. Click on the sort and filter toggle for the column which contains the colored cells.
  2. Select Filter by Color from the menu options.
  3. Choose the color you want to filter on.

Now the SUBTOTAL result will update and you can quickly find the count of your colored cells.

If you adjust colors, add or delete data in the table. You will need to reapply the filters as they don’t update dynamically.

Go to the Data tab and click on the Reapply button in the Sort & Filter section.

Pros

  • Easy to use.

Cons

  • Requires manually filtering data.
  • The filters don’t update and you will need to reapply them when you change your data.
  • Since the count is based on the filtering, the result can be different for each user when collaborating on the workbook.

Use the GET.CELL Macro4 Function to Count Colored Cells

Excel does have a function to get the fill color of a cell, but it is a legacy Macro 4 function.

These predate VBA and were Excel’s formula based scripting language.

While they are considered deprecated, it is still possible to use them inside the name manager.

There is a GET.CELLS Macro4 function that will return a color code based on the fill color of the cell.

You can create a relative named range that uses this by going to the Formulas tab and clicking on Define Name.

This will open up the New Name menu and you can define the reference.

Give your defined name a Name like ColorCode. This is how you will refer to it in the workbook.

= GET.CELL ( 38, Orders[@[Order ID]] )

Add the above formula into the Refers to section. For this formula you data will need to be in a table named Orders with a column called Order ID, but you can change these to fit your data.

This formula will always refer to the Order ID cell in the current row to which it’s referenced.

= GET.CELL ( 38, $B3 )

If your data is not inside a table, then you could use the above formula instead, where B is the column containing the fill color you want to count. This uses a fixed column and relative row reference to always refer to column B of the current row.

= ColorCode

With the define name, you can now create another column using the above formula in your data to calculate the color code for each row.

The result will be an integer value based on the fill color of the cell in the Order ID column.

= COUNTIFS ( Orders[ColorCode], B14 )

Now you can count the number or colored cells using the above COUNTIFS formula.

This formula will count cells in the ColorCode column if they have a matching code. In this example, it counts all the 10 values which correspond to the green color.

Pros

  • You can calculate the fill color for each row of data and it will update dynamically as you change the data or fill color of the data.

Cons

  • This method uses the Macro4 legacy functions and they may not continue to be supported my Microsoft.
  • Harder to implement.
  • You will need to save your workbook in the xlsm macro enabled format.
  • You can’t move your referenced column if you’re using the column notation inside the named range.
  • You can’t change your column name if you’re using the table notation inside the named range.
  • You need to create an additional column and use a COUNTIFS function to get the count.

Use a LAMBDA Function to Count Colored Cells

This will use the same GET.CELL Macro4 function as the previous method, but you can create a custom LAMBDA function to use it inside the workbook.

The LAMBDA function is a special function that allows you to build custom functions via the name manager.

This is a new function, so it’s not generally available and you need to be on Microsoft 365 office insiders program at the time of writing this post.

Go to the Formulas tab and click on Define Name to open the New Name menu.

= LAMBDA ( cell, GET.CELL ( 38, cell ) )

Give the define name a name like GETCOLORCODE and add the above formula into the Refers to section.

This will create a new GETCOLORCODE function that you can use inside the workbook. It will take one argument called cell and return the cell’s fill color code.

= GETCOLORCODE ( [@[Order ID]] )

Now all you have to do is create a column to calculate the color code for each row using the above formula.

= COUNTIFS ( Orders[ColorCode], B14 )

Again, you can count the number or colored cells using the the above COUNTIFS formula.

Pros

  • You can build a function that calculates the color code for a given cell.
  • Allows you to directly reference a cell to get the color code.

Cons

  • This method uses the LAMBDA function in Excel for M365 and is currently not generally available.
  • Harder to implement.
  • This method uses the Macro4 legacy functions which may not be supported in the future.
  • You will need to save your workbook in the xlsm macro enabled format.
  • Requires creating an additional column and using a COUNTIFS function to get the count.

Use VBA to Count Colored Cells

Function COLORCOUNT(CountRange As Range, FillCell As Range)
Dim FillColor As Integer
Dim Count As Integer
FillColor = FillCell.Interior.ColorIndex
For Each c In CountRange
    If c.Interior.ColorIndex = FillColor Then
        Count = Count + 1
    End If
Next c
COLORCOUNT = Count
End Function

Pros

  • You can create a function that counts the colored cells in a range.
  • The results will update as you edit your data or change the fill color.
  • User friendly option to use once it is set up.

Cons

  • Uses VBA which requires the file is saved in the xlsm format.
  • Less user friendly to set up.

Use Office Scripts to Count Colored Cells

Office Scripts are the brand new method for automating tasks in Excel.

But it’s only available for Excel online and only with an enterprise plan. If you have an enterprise plan, then you’re good to go with this method!

First, you will need to set up two named cells which the code will refer to.

Select any cell and type a name like ColorCount into the name box and press Enter. This will create a named range which can be referred to in the code.

This means we can move the cell and the code will refer to its new location.

You will also need to create a Color named range for the input of the color to count.

Now you can create a new office script. Go to the Automate tab in Excel online and click on the New Script command.

function main(workbook: ExcelScript.Workbook) {
	let selectedSheet = workbook.getWorksheet("Sheet1");
	let myID = selectedSheet.getRange("Orders[Order ID]");
	let myIDCount = selectedSheet.getRange("Orders[Order ID]").getCellCount();
	let myColorCode = selectedSheet.getRange("Color").getFormat().getFill().getColor();
	let counter = 0;

	for (let i = 0; i < myIDCount; i++) {
		if (myID.getCell(i, 0).getFormat().getFill().getColor() == myColorCode ) {
			counter = counter + 1;
		} 
	}

	selectedSheet.getRange("ColorCount").setValue(counter);
}

This will open up the Code Editor and you can paste in the above code and save the script.

Press the Run button and the code will execute and then populate the ColorCount named range with the count of the colored cells found in the Order ID column.

Pros

  • This is the newest method and will be supported going forward.
  • The script can be run from Power Automate for a no click solution.

Cons

  • This method is difficult to set up.
  • This requires an enterprise license and you need to use Excel online.

Conclusions

Hopefully Microsoft will one day create a standard Excel function that can return properties from a cell such as its fill color.

Until that happens, at least you have a few options available that allow you to find the count of colored cells without manually counting them.

Do you have a preferred method not listed here? Let me know in the comments!

About the Author

John MacDougall

John is a Microsoft MVP and qualified actuary with over 15 years of experience. He has worked in a variety of industries, including insurance, ad tech, and most recently Power Platform consulting. He is a keen problem solver and has a passion for using technology to make businesses more efficient.

The COUNT function in Excel counts cells containing numbers in Excel. You cannot count colored or highlighted cells with the COUNT function. But you can follow a few workarounds to count colored cells in Excel. In this tutorial, you will learn how to count colored cells in Excel.

In excel, you can count highlighted cells using the following workarounds:

  1. Applying SUBTOTAL and filtering the data
  2. Using the COUNT and GET.CELL function
  3. Using VBA

Using Subtotal and Filter functions

You can count highlighted cells in Excel by subtotaling the visible cells and applying a filter based on colors.

In this example, you have the sales record for eight salespersons for the month of July. The rows containing salespersons having sales less than $7000 is highlighted in red, the other cells with the salespersons having a bonus is highlighted in green. To calculate the number of salespersons highlighted in red:

  • Select the cell C10.
  • Assign the formula =SUBTOTAL(102, C2:C9). The first argument 102 counts the visible cells in the specified range.

  • Select cells A1:C9 by clicking on cell A1 and dragging it till C9 with your mouse.
  • Go to Data > Sort & Filter > Filter.

  • Click on the filter drop downs in C1.
  • Go to Filter by Color and select the color Red to find out the salespersons highlighted in red.

This will output change the subtotal value to x, which is the number of salespersons having sales less than $7000.

Using COUNTIF and GET.CELL functions

You can use GET.CELL with named ranges to count colored cells in Excel. GET.CELL is an old Macro4 function and does not work with regular functions. However, it still works with named ranges. To count colored cells with GET.CELL, you need to extract the color codes with GET.CELL and count them to find out the number of cells highlighted in the same color. To count cells using GET.CELL and COUNTIF:

  • Go to Formulas > Define Name.

  • In the dialogue box that pops up, set name as ColorCount, scope as workbook and Refers to as =GET.CELL(38, Sheet1!C2).

  • Assign the formula =ColorCount to cell D2 and drag it till D9 with your mouse.

  • This would return a number based on the background color. If there is no background color, Excel would return 0. Otherwise all cells with the same background color return the same number.

  • From column D, look at the code for the color red. In this case it is 22.
  • Select cell D10 and assign the formula = COUNTIF($D:$D, 22).

This will count the cells colored in red to find the number of salespersons with sales less than $7000 and return the number 3.

Using VBA

You can also create a custom function with VBA to count highlighted cells in Excel. To do that you need to create a custom function using VBA that works like a COUNTIF function and returns the number of cells for the same color.

You will follow the syntax: =CountFunction(CountColor, CountRange) and use it like other regular functions.Here CountColor is the color for which you want to count the cells. CountRange is the range in which you want to count the cells with the specified background color.

To count the cells highlighted in red, follow the steps below:

  • Hold down the ALT + F11 keys, and it opens the Microsoft Visual Basic for Applications window.
  • Click Insert > Module.

  • Paste the following code in the Module Window.

  • In this code, you are defining a function with two arguments rColor and rRange. You are going to save the value of the background color of A2 in lCol. Then you are going to run a FOR loop where, if the cell’s background color matches the color in lCol, you increment vResult. This function returns the value of vResult, which is the count of the cells having the same background color.
  • Then save the code, and apply the following formula to cell C10:

=ColorCount(A2, C2:C10).

  • Here A2 is the cell with the background color red you want to count. C2:C10 is the cell range that you want to count.

This will return the number of salespersons with sales less than $7000 in the month of July which is 3.

One of the most sought after feature among heavy Excel users i.e. count or sum cells in Excel based on cell background color. I really wish we had a formula or a feature that does it for us but it isn’t available yet. But we do have the solution if we turn to VBA and write few lines of code.

Count or Sum cells based on color using Excel filter

Yes! We can use Excel filter to do this if we couple it with the appropriate formula. Your usual COUNT or SUM functions won’t help in this case. This is because Excel filter simply hides the result not fulfilling the criteria and both COUNT and SUM functions consider hidden and visible data therefore, we need a function that processes only visible data and ignore the hidden one.

This is where we meet SUBTOTAL function. This approach is especially good for those who want to avoid getting into VBA.

Step 1: For this approach we need the data to have headings. If data does not have headings already then its suggested to have heading inserted for each column at the top by adding a new row or at least for the column containing colored cells.

Step 2: Selected the cells containing headers and go to Data tab > in sort and filter group click Filter button and you will see drop-down arrows added to the heading cells.

Step 3: Move to the last cell of column containing colored cells. You can do that quickly by simply having an active cell within in that column and hitting CTRL+DownArrow. Move one cell down further and put the following formula for count:

=SUBTOTAL(2,B2:B10)

I had my data in range in cells B2 through B10 only that is why formula contains just that.

Step 4: Click the drop-down arrow button of the column containing colored. A menu will appear and in there hover the cursor over filter by color option and select the desired. This will filter the data down to those cells that contain the selected color only.

If you want to sum the values in specific colored cells you need to change the formula a little as following:

=SUBTOTAL(9,B2:B10)

However, this approach is quite limited. As you can process only on one color at a time. If you have more than one color in large data set, and you want to count, sum or average specifically colored data then much better and faster approach is by making a simple UDF in VBA.

Count cells based on color using VBA

For this we need a UDF i.e. user defined function. Following are the steps:

Step 1: Hit ALT+F11 shortcut key to enter visual basic environment

Step 2: Once you are inside visual basic editor go to Insert > module to insert a new module.

Step 3: Double click newly created module and a new blank window will open on the right. Copy the following code and paste it inside empty window:

Function CountColor(color As Range, data_range As Range)
 Dim dRange As Range
 Dim dColor As Long
dColor = color.Interior.ColorIndex
For Each dRange In data_range
 If dRange.Interior.ColorIndex = dColor Then
 CountColor = CountColor + 1
 End If
Next dRange
End Function

Step 4: The above code has now given you a new function to use named CountColor. Just provide the cell address containing the color you want to use as count criteria and then provide the range of data to process.

Following illustration will walk you through the process:

And you can count for multiple colors at once as well:

Understanding VBA code

Lets understand what the code is about and what are we achieving with it.

Line 1:
Function CountColor(color As Range, data_range As Range)

Keyword “Function” tells Excel that we want to initiate UDF with the name “CountColor”. Inside bracket we required two arguments; “color” and “data_range” and both are of type range meaning we have to mention either a cell address or a range of cells. In descriptive manner the formula is following:

CountColor(cell address with the background color you want to use as criteria, range of cells you want to check for color selected and count)

Remember we have defined two variables color and data_range. But we need to tell from where to get the values for these two and what to do with it. So far it is just a disclosure.

Line 2 & 3:
Dim dRange As Range
Dim dColor As Long

Two variables with the name dRange and dColor are defined. These two will be used to process the information given as part of function arguments mentioned inside parenthesis in line 1. I will explain it further in a bit.

Line 4:
dColor = color.Interior.ColorIndex

Remember dColor variable defined in line 2 and 3? and “color” variable mentioned in line 1?

Once user has mentioned the cell address for first argument “color” we want Excel to get the color index or simply the specific color number and store it as a value of variable dColor. Once stored we can use this color index number as a criteria.

Line 5 to 8:
For Each dRange In data_range
If dRange.Interior.ColorIndex = dColor Then
CountColor = CountColor + 1
End If

Remember we defined dRange as variable and has data_range as argument in line? In fifth line we asked Excel to take each cell in range (that user has mentioned for second argument as data_range) and equate it as dRange.

In sixth line we are invoking IF condition statement and we are checking if the color index number of any cell is equal to the color index number of dColor variable (remember we stored a specific color index number in line 4 above) then add “1” to the count. 

Terminate IF statement once all cells are checked going through each element in dRange.

This essentially creates a loop and check each cell mentioned in range and once all cells are checked loop is terminated.

In few words this code is fetching the color index number of cell mentioned by user and then comparing it against the color index numbers of each and every cell in the range specified. The ones that match are counted in and the ones that doesn’t match are ignored. That is how we get the count.

Sum cells based on color using VBA

Now that we understand how code works. We can modify it just a tad bit to have another function that sums the value of cells that fulfill criteria. Have a look at the following code that makes a new UDF that sum values based on cell color:

Function SumColor(color As Range, data_range As Range)
 Dim dRange As Range
 Dim dColor As Long
dColor = color.Interior.ColorIndex
For Each dRange In data_range
 If dRange.Interior.ColorIndex = dColor Then
 SumColor = SumColor + dRange.Value
 End If
Next dRange
End Function

It is exactly the same code as we had for count function with only difference. Instead of adding “1” for each cell matching the criteria, we want excel to take the value of that cell and add it up.

As simple as it can get!

Here is the illustration that shows count and sum of cell values based on color:

Top 3 Methods to Count Colored Cells In Excel

There is no built-in function to count colored cells in Excel, but below mentioned are three different methods to do this task.

  1. Count colored cells by using the Auto Filter option
  2. Count colored cells by using the VBA code
  3. Count colored cells by using the FIND method
Table of contents
  • Top 3 Methods to Count Colored Cells In Excel
    • #1 – Excel Count Colored Cells By Using Auto Filter Option
    • #2 – Excel Count Colored Cells by using VBA Code
    • #3 – Excel Count Colored Cells by Using FIND Method
    • Things to Remember
    • Recommended Articles

Now, let us discuss each of them in detail –

#1 – Excel Count Colored Cells By Using Auto Filter Option

For this example, let us look at the below data.

Count colored cells excel example 1

As we can see, each city is marked with different colors. So, we need to count the number of cities based on cell color.

As we can see, all the colors in the data. Now, we must choose the color that we want to filter.

We must follow the below steps to count cells by color.

  1. We must first apply the filter to the data.

    Count colored cells excel example 1-1

  2. At the bottom of the data, we need to apply the SUBTOTAL function in Excel to count cells.

    Count colored cells excel example 1-2

  3. The SUBTOTAL function contains many formulas. It is helpful if we want to count, sum, and average only visible cell data. Under the heading PIN, we must click on the drop-down list filter and select Choose by Color.

    Count colored cells excel example 1-3

  4. As we can see, all the colors in the data. Now, we must choose the color that we want to filter.

    Count colored cells excel example 1-4
    Wow!!! As we can see in cell D21, our SUBTOTAL function is given the count of filtered cells as 6 instead of the previous result of 18.

Similarly, now we must choose other colors to get the count of the same.

example 1-5

So, blue-colored cells count to five now.

#2 – Excel Count Colored Cells by using VBA Code

VBA’s street smart techniques help us reduce time consumption at our workplace for some complicated issues.

We can reduce time, but we can also create our functions to fit our needs. For example, we can create a function to count cells based on color in one such function. Below is the VBA codeVBA code refers to a set of instructions written by the user in the Visual Basic Applications programming language on a Visual Basic Editor (VBE) to perform a specific task.read more to create a function to count cells based on color.

Code:

Function Color_Cell_Count(ColorCell As Range, DataRange As Range)

Dim Data_Range As Range
Dim Cell_Color As Long

Cell_Color = ColorCell.Interior.ColorIndex

For Each Data_Range In DataRange

If Data_Range.Interior.ColorIndex = Cell_Color Then
Color_Cell_Count = Color_Cell_Count + 1
End If

Next Data_Range

End Function

Then, copy and paste the above code to your module.

Count Cells using VBA Code 1

This code is not a SUB Procedure to run. Rather, it is a “User Defined FunctionUser Defined Function in VBA is a group of customized commands created to give out a certain result. It is a flexibility given to a user to design functions similar to those already provided in Excel.read more” (UDF).

The first line of the code “Color_Cell_Count” is the function name. Now, we must create three cells and color them as below.

Count Cells using VBA Code 1-1

Now, we must open the function “Color_Cell_Count” in the G2 cell.

Count Cells using VBA Code 1-2

Even though we do not see the syntax of this function, the first argument is what color we need to count, so we must select cell F2.

Count Cells using VBA Code 1-3

The second argument is to select the range of cells as D2:D19.

Count Cells using VBA Code 1-4

Now, close the bracket and press the “Enter” key. As a result, it will provide the count of cells with the selected cell color.

Count Cells using VBA Code 1-5

Like this, with the help of UDF in VBA, we can count cells based on cell color.

#3 – Excel Count Colored Cells by Using FIND Method

We can also count cells based on the FIND method as well.

  • Step 1: First, we must select the range of cells where we need to count cells.

Count Cells by Use FIND Method 1

  • Step 2: Now, we need to press Ctrl + F to open the FIND dialog box.

Count Cells by Use FIND Method 1-1

  • Step 3: Now, click on “Options>>.”

Count Cells by Use FIND Method 1-2

  • Step 4: Consequently, it will expand the “Find” dialog box. Now, we must click on the “Format” option.

Count Cells by Use FIND Method 1-3

  • Step 5: Now, it will open up the “Find Format” dialog box. We need to click on the “Choose Format From Cell” option.

Using FIND Method 1-4

  • Step 6: Now, move the mouse pointer to see the pointer to select the format cell in excelFormatting cells is an important technique to master because it makes any data presentable, crisp, and in the user’s preferred format. The formatting of the cell depends upon the nature of the data present.read more that we are looking to count.

Using FIND Method 1-5

  • Step 7: We will select the cell formatted as the desired cell count. We have chosen the F2 cell as the desired cell format, and now we can see the preview.

Using FIND Method 1-6

  • Step 8: Now, click on the “Find All” option to get the count of the selected cell format count of cells.

Using FIND Method 1-7

So, a total of 6 cells were found with selected formatting colors.

Things to Remember

  • The provided VBA code is not a Subprocedure in VBASUB in VBA is a procedure which contains all the code which automatically gives the statement of end sub and the middle portion is used for coding. Sub statement can be both public and private and the name of the subprocedure is mandatory in VBA.read more; it is a UDF.
  • The SUBTOTAL contains many formulas used to get the result only for visible cells when the filter is applied.
  • We do not have any built-in function in Excel to count cells based on the color of the cell.

Recommended Articles

This article has been a guide to Count Colored Cells in Excel. We learned to count colored cells using the auto filter option, VBA code, FIND method, and downloadable Excel template. You may learn more about Excel from the following articles: –

  • Shade Alternate Rows in Excel
  • Countif not Blank in Excel
  • Count Rows in Excel
  • Word Count in Excel

Like this post? Please share to your friends:
  • Can i convert word file to pdf online
  • Can not open file excel
  • Can i convert ppt to word
  • Can i convert pdf to word online free
  • Can not open excel files