-
— 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):
- Using Filter and SUBTOTAL function
- Using GET.CELL function
- 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:
There are two background colors used in this data set (green and orange).
Here are the steps count colored cells in Excel:
- In any cell below the data set, use the following formula: =SUBTOTAL(102,E1:E20)
- Select the headers.
- Go to Data –> Sort and Filter –> Filter. This will apply a filter to all the headers.
- Click on any of the filter drop-downs.
- 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.
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.
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 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.
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):
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.
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”
-
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
-
-
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
-
Thanks, your VB macro works perfectly!!
-
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?
-
Thank you so much. Just what I needed.
-
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?
-
Does this work with horizontal range. Doesnt seem to be working in mine with an horizontal range
-
Fantastic video and article. Very helpful and simple to follow. Thank you!
-
Simple and straight forward. This did the job. Thank you!
-
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 asCan any body help me to fix this problem
-
(VBA Solution)
Too good to be true…just throws the standard formula error (“not trying to type a formula etc.” -
Thank you so much, this solve my problems.
-
The code in the screen shot of the VBA has errors
-
Help! Is there anyway to modify this VBA so that it works for =max
-
GOOD TRICKS FOR COUNTING BY COLOUR
-
tried =SUBTOTAL(102,$E$2:$E$20) and didn’t work. waste of time
-
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
-
-
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.
-
The VBA function worked great!! I’m now showing off to anyone in the office who will listen! Thanks very much
-
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.
-
-
Using VBA was perfect! Thanks
-
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
-
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.
-
-
Is there a way to apply this to rows rather than columns?!
-
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 -
Does this work in an online excel sheet?
-
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 -
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
-
-
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.
-
-
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 FunctionBut, 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?
-
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.
-
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!!!
-
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.
-
-
Hi,
can you use both GetColorCount and Sumbycolor VBA in the same worksheet. -
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.
-
-
When i press ‘enter’ with you’r download exel i get #NAME? why? PS ; I am new in VBA
-
-
-
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.
-
-
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
-
-
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.
-
-
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 LongColor = rgColor.Interior.ColorIndex
For Each rCell In Target
If rCell.Interior.ColorIndex = Color Then lgCounter = lgCounter + 1
Next rCell
GetColorCount = lgCounter
End Function -
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.aspxGr,
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 SubGr,
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 SubSo, 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 SubOn 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.
How to Count Cells with Color in Excel?
There are multiple ways we can count cells based on the color of the cell in Excel.
- Method #1 – Count cells with color using the filter method with a subtotal function
- Method #2 – Count cells with color by creating a function using VBA code.
Table of contents
- How to Count Cells with Color in Excel?
- #1 Using Filter Method with Sub Total Function
- #2 Create Function using VBA Coding
- Things to Remember here
- Recommended Articles
Now, let us discuss each of the methods in detail, along with an example –
#1 Using Filter Method with Sub Total Function
As we said, we have multiple methods to count cells based on the color of the cell in Excel. This method uses the filter and subtotal function.
The steps to use the filter method with the subtotal function in Excel are as follows.
- First, we need to apply a subtotal function, so open the SUBTOTAL function in Excel at the end of the data.
- Once we open the SUBTOTAL function, we are supplied with a function list under this; since we are counting cells, choose the 2 – COUNT function.
- After selecting the subtotal method next, we need to choose a range of cells to be counted.
- Now the count of these cells will be 7.
- For the above data, the structure applies a filter option.
- We must click on the drop-down list of filters to go to “Filter by Color.” It will show up all the available colors to filter.
- We must choose any color. As a result, we will have those colored rows.
- As we can see above, our SUBTOTAL function shows the count of the filtered rows only. So, for example, since there are only two rows marked with orange color, the SUBTOTAL function shows the count as three only. Similarly, choose another color and see whether it works perfectly or not.
This count is 2, so we have an updated result.
#2 Create Function using VBA Coding
Unfortunately, as we told you, we do not have any built-in function which can help us count cells based on color in Excel. Again, we have been told there is no built-in function, but the beauty is we can create our function by using VBA codingVBA 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.
Below is the code we have already written to create a function to count cells based on color.
Code:
Function ColorCount(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 ColorCount = ColorCount + 1 End If Next Data_Range End Function
As shown below, we have to copy the above code and paste it into our VBA module.
Now come back to the worksheet where we have data and create three cells with color.
We must put an equal sign and open the function we have created using the above code.
The first argument with this function is “we need to select the color cell that we need to count,” so in this case, we will choose the E2 cell.
The second argument in which range of cells we need to count the selected cell color.
That is all we need for this function. Next, close the bracket and press the “Enter” key to get the count of the selected cell color.
Similarly, we need to do it for other colored cells. Again, we get the following result.
It is done by using the VBA “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,” which will loop through a provided range of cells and count the number of cells that exactly hold the same color as the provided cell color.
Then it will sum all the matched color cells and return the result as a count of that color cell.
Like this, we can count cells with colors in Excel. There are other methods, but those are slightly complicated, so we must go for the easy one at the start of the learning.
Things to Remember here
- The SUBTOTAL function counts cells only, which are visible, so as the filter is applied, it will count only those filtered colored cells.
- VBA code is for the UDF function because there are no built-in functions, so we have to create our own.
Recommended Articles
This article has been a guide to Count Cells By Color in Excel. We discuss counting cells with color by using a filter option with subtotal function and VBA code in Excel and a downloadable template. You may learn more about Excel from the following articles: –
- Sum by Color in Excel
- Count Colored Excel Cells
- Sort by Color in Excel
- Alternate Row Color in Excel
Skip to content
В этой статье вы узнаете, как посчитать ячейки по цвету и получить сумму по цвету ячеек в Excel. Эти решения работают как для окрашенных вручную, так и с условным форматированием.
Если вы активно используете различные цвета заливки и шрифта на листах Excel, чтобы различать различные типы значений, вам может потребоваться узнать, сколько ячеек выделено определенным цветом. Если значения ваших ячеек являются числами, вы можете автоматически вычислить сумму ячеек, закрашенных одним цветом, например, сумму всех красных ячеек.
Как все мы знаем, Microsoft Excel предоставляет множество формул для разных целей, и было бы логично предположить, что для подсчета ячеек по цвету есть и такие. Но, к сожалению, нет стандартной функции, которая позволяла бы суммировать по цветам или считать по цветам в Excel.
Помимо использования сторонних надстроек, есть только одно возможное решение — использование пользовательских функций. Если вы очень мало знаете об этой технологии или никогда раньше не слышали этот термин, не пугайтесь, вам не придется писать код самостоятельно. Здесь вы найдете готовое решение, и все, что вам нужно сделать, это скопировать / вставить его в свою книгу.
Функции и макросы, которые мы рассмотрим в этой статье, помогут нам сделать следующее:
- Как посчитать по цвету и суммировать по цвету на листе Excel
- Как суммировать по цвету и сосчитать по цвету во всей рабочей книге
- Пользовательские функции для получения цвета ячейки, цвета шрифта и цветового кода
- Как считать по цвету и суммировать ячейки, окрашенные с использованием условного форматирования
- Самый быстрый способ подсчета и суммирования ячеек по цвету в Excel
Как посчитать по цвету и суммировать по цвету на листе Excel
Предположим, у вас есть таблица со списком заказов, в которой ячейки в столбце «Количество» окрашены в зависимости от их значения в колонке «Выполнение» и даты: ячейки с выполняемыми заказами сроком до 30 дней от текущей даты — желтые, уже выполненные — зеленые, а просроченные заказы — красные.
Теперь нам нужно автоматически подсчитать ячейки определенного цвета, т.е. посчитать количество красных, зеленых и желтых ячеек в таблице. Как я объяснил выше, прямого решения этой задачи при помощи стандартных формул Excel не существует. Но, к счастью, есть код VBA для Excel. Выполните 5 быстрых шагов ниже, и вы узнаете число и сумму ваших цветных ячеек всего за несколько минут.
- Откройте книгу Excel и нажмите
Alt+F11
, чтобы открыть редактор Visual Basic (VBE). - Щелкните правой кнопкой мыши имя своей книги в разделе «Project–VBAProject» в правой части экрана, а затем выберите «Вставить» > «Модуль» в контекстном меню.
- Добавьте в вашу рабочую книгу следующий код:
Function GetCellColor(xlRange As Range)
Dim indRow, indColumn As Long
Dim arResults()
Dim colorVal As Variant
Application.Volatile
If xlRange Is Nothing Then
Set xlRange = Application.ThisCell
End If
If xlRange.Count > 1 Then
ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count)
For indRow = 1 To xlRange.Rows.Count
For indColumn = 1 To xlRange.Columns.Count
colorVal = xlRange(indRow, indColumn).Interior.Color
arResults(indRow, indColumn) = (colorVal Mod 256) & ", " & ((colorVal 256) Mod 256) & ", " & (colorVal 65536)
Next
Next
GetCellColor = arResults
Else
colorVal = xlRange.Cells(1, 1).Interior.Color
GetCellColor = (colorVal Mod 256) & ", " & ((colorVal 256) Mod 256) & ", " & (colorVal 65536)
End If
End Function
Function GetCellFontColor(xlRange As Range)
Dim indRow, indColumn As Long
Dim arResults()
Dim colorVal As Variant
Application.Volatile
If xlRange Is Nothing Then
Set xlRange = Application.ThisCell
End If
If xlRange.Count > 1 Then
ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count)
For indRow = 1 To xlRange.Rows.Count
For indColumn = 1 To xlRange.Columns.Count
colorVal = xlRange(indRow, indColumn).Font.Color
arResults(indRow, indColumn) = (colorVal Mod 256) & ", " & ((colorVal 256) Mod 256) & ", " & (colorVal 65536)
Next
Next
GetCellFontColor = arResults
Else
colorVal = xlRange.Cells(1, 1).Font.Color
GetCellFontColor = (colorVal Mod 256) & ", " & ((colorVal 256) Mod 256) & ", " & (colorVal 65536)
End If
End Function
Function CountCellsByColor(rData As Range, cellRefColor As Range) As Long
Dim indRefColor As Long
Dim cellCurrent As Range
Dim cntRes As Long
Application.Volatile
cntRes = 0
indRefColor = cellRefColor.Cells(1, 1).Interior.Color
For Each cellCurrent In rData
If indRefColor = cellCurrent.Interior.Color Then
cntRes = cntRes + 1
End If
Next cellCurrent
CountCellsByColor = cntRes
End Function
Function SumCellsByColor(rData As Range, cellRefColor As Range)
Dim indRefColor As Long
Dim cellCurrent As Range
Dim sumRes
Application.Volatile
sumRes = 0
indRefColor = cellRefColor.Cells(1, 1).Interior.Color
For Each cellCurrent In rData
If indRefColor = cellCurrent.Interior.Color Then
sumRes = WorksheetFunction.Sum(cellCurrent, sumRes)
End If
Next cellCurrent
SumCellsByColor = sumRes
End Function
Function CountCellsByFontColor(rData As Range, cellRefColor As Range) As Long
Dim indRefColor As Long
Dim cellCurrent As Range
Dim cntRes As Long
Application.Volatile
cntRes = 0
indRefColor = cellRefColor.Cells(1, 1).Font.Color
For Each cellCurrent In rData
If indRefColor = cellCurrent.Font.Color Then
cntRes = cntRes + 1
End If
Next cellCurrent
CountCellsByFontColor = cntRes
End Function
Function SumCellsByFontColor(rData As Range, cellRefColor As Range)
Dim indRefColor As Long
Dim cellCurrent As Range
Dim sumRes
Application.Volatile
sumRes = 0
indRefColor = cellRefColor.Cells(1, 1).Font.Color
For Each cellCurrent In rData
If indRefColor = cellCurrent.Font.Color Then
sumRes = WorksheetFunction.Sum(cellCurrent, sumRes)
End If
Next cellCurrent
SumCellsByFontColor = sumRes
End Function
- Сохраните свою книгу как «Книга Excel с поддержкой макросов (.xlsm)».
Если вы новичок и вам сложно работать с VBA, вы можете найти подробные пошаговые инструкции и несколько полезных советов в этом руководстве: Как вставить и запустить код VBA в Excel .
- Теперь, когда вся подготовительная работа сделана, выберите ячейку, в которой вы хотите получить результат, и введите в нее только что записанную нами пользовательскую функцию CountCellsByColor:
CountCellsByColor( диапазон ; код цвета )
здесь и далее эти аргументы означают:
диапазон – диапазон ячеек, в которых вы хотите произвести подсчеты по цвету,
код цвета – адрес ячейки-образца, цвет фона или шрифта которой соответствуют искомому цвету фона или шрифта.
В этом примере мы используем формулу, =CountCellsByColor(D2:D21;A24), где D2:D21— это диапазон, в котором вы хотите посчитать количество ячеек с цветом, а A24 — это ячейка, закрашенная нужным нам цветом, красным в нашем случае.
Аналогичным образом вы записываете формулы для других цветов, которые хотите посчитать, желтого и зеленого, в нашей таблице.
Если у вас есть числовые данные в цветных ячейках (например, столбец Количество в нашей таблице), вы можете сложить значения на основе определенного цвета, используя аналогичную функцию SumCellsByColor:
SumCellsByColor( диапазон ; код цвета)
Как показано на скриншоте выше, мы использовали формулу суммы по цвету, =SumCellsByColor(D2:D21;A24), где D2:D21 — это диапазон, а A24 — ячейка с образцом цвета.
Аналогичным образом вы можете посчитать выделенные цветом ячейки и суммировать значения таких ячеек по цвету шрифта, используя функции CountCellsByFontColor и SumCellsByFontColor соответственно.
На скриншоте ниже вы видите, как можно подсчитать количество значений, написанных красным цветом.
=CountCellsByFontColor(D2:D21;A24)
Аналогично подсчитываем сумму чисел, имеющих определённый цвет шрифта, при помощи формулы:
=SumCellsByFontColor(D2:D21;A24)
Примечание. Если после применения вышеупомянутого кода VBA вам потребуется раскрасить еще несколько ячеек вручную, то сумма и количество окрашенных ячеек не будут пересчитаны автоматически, чтобы отразить произошедшие изменения. Пожалуйста, не сердитесь на нас, это не ошибка кода
На самом деле, это нормальное поведение всех макросов Excel, скриптов VBA и пользовательских функций. Дело в том, что все подобные функции вызываются только при изменении данных рабочего листа. Но Excel не воспринимает изменение цвета шрифта или цвета ячейки как изменение данных.
Итак, после раскрашивания ячеек вручную, просто поместите курсор в любую ячейку и нажмите F2
, а затем Enter
. То есть, сделайте вид, что меняете содержимое какой-либо ячейки. Сумма и количество в пользовательской функции тут же будут обновлены. То же самое относится и к другим макросам, которые считают по цвету.
Как суммировать по цвету и сосчитать по цвету во всей рабочей книге
Приведенная ниже пользовательская функция подсчитывает и находит сумму ячеек по цвету заливки на всех листах рабочей книги. Итак, вот ее код:
Function WbkCountCellsByColor(cellRefColor As Range)
Dim vWbkRes
Dim wshCurrent As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
vWbkRes = 0
For Each wshCurrent In Worksheets
wshCurrent.Activate
vWbkRes = vWbkRes + CountCellsByColor(wshCurrent.UsedRange, cellRefColor)
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
WbkCountCellsByColor = vWbkRes
End Function
Function WbkSumCellsByColor(cellRefColor As Range)
Dim vWbkRes
Dim wshCurrent As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
vWbkRes = 0
For Each wshCurrent In Worksheets
wshCurrent.Activate
vWbkRes = vWbkRes + SumCellsByColor(wshCurrent.UsedRange, cellRefColor)
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
WbkSumCellsByColor = vWbkRes
End Function
Вы используете этот макрос так же, как и предыдущий код, и выводите количество и сумму цветных ячеек с помощью следующих формул =WbkCountCellsByColor() и =WbkSumCellsByColor() соответственно.
Единственный аргумент, который нужен этим функциям, это адрес ячейки с нужным цветом.
Просто введите любую из этих формул в любую пустую ячейку на любом листе без указания диапазона, используйте в скобках адрес ячейки нужного цвета, например
=WbkSumCellsByColor(A1)
Формула отобразит сумму всех ячеек, закрашенных тем же цветом, на всех листах в вашей рабочей книге.
Пользовательские функции для получения цвета ячейки, цвета шрифта и цветового кода
Здесь вы найдете перечень всех функций, которые мы использовали ранее, а также несколько новых, которые извлекают цветовые коды.
Зачем они нам? Но ведь если ваша таблица окрашена не совсем стандартными цветами (например, светло-зеленым), то подобрать образец цвета для функций, которые мы рассматривали выше, будет весьма затруднительно. Если же у вас будет код нужного цвета, вы сможете использовать его при форматировании ячейки-образца, чтобы получить точное соответствие цвета.
Если вы вдруг забыли, как можно вручную раскрасить ячейку в нужный цвет, то напомню. Жмем Ctrl+1
, затем Заливка – Другие цвета – Спектр – RGB формат. Вот туда и вставляем полученный код. Точное соответствие цвета будет обеспечено.
Примечание. Помните, что все эти формулы будут работать только в том случае, если вы добавили пользовательскую функцию в книгу Excel, как показано ранее в этой статье.
Функции для подсчета по цвету:
- CountCellsByColor(диапазон; код цвета) – считает ячейки с заданным цветом фона.
В приведенном выше примере мы использовали следующую формулу для подсчета ячеек по цвету
= CountCellsByColor (F2: F14, A17)
где F2: F14 — выбранный диапазон, а A17 — ячейка с нужным цветом фона. Вы можете использовать все остальные формулы, перечисленные ниже, аналогичным образом.
- CountCellsByFontColor(диапазон; код цвета) – подсчитывает ячейки с указанным цветом шрифта.
Формулы для суммирования по цветам:
- SumCellsByColor(диапазон; код цвета) – вычисляет сумму ячеек с определенным цветом фона.
- SumCellsByFontColor(диапазон; код цвета) – вычисляет сумму ячеек с определенным цветом шрифта.
Функции для получения кода цвета ячейки:
- GetCellFontColor(ячейка) – возвращает цветовой код цвета шрифта указанной ячейки.
- GetCellColor(ячейка) – возвращает цветовой код цвета фона указанной ячейки.
Вот примеры использования функции цвета ячейки:
А на этим скриншоте мы получаем цветовой RGB код шрифта.
Как считать по цвету и суммировать ячейки, окрашенные с использованием условного форматирования
Если вы применили условное форматирование к ячейкам на основе их значений и теперь хотите посчитать эти ячейки по цвету или просуммировать значения в закрашенных ячейках, то у меня плохие новости — не существует универсальной определяемой пользователем функции, которая бы суммировала по цвету или пересчитала закрашенные условным форматированием ячейки и вывела бы полученные числа прямо в указанные клетки таблицы. По крайней мере мне о такой функции не известно, увы
Конечно, вы можете найти в Интернете тонны кода VBA, который пытается это сделать, но все эти коды (по крайней мере, примеры, с которыми я сталкивался), не обрабатывают условное форматирование, такое как «Форматировать все ячейки на основе их значений», «Форматировать только наибольшие или наименьшие значения», «Форматировать только значения выше или ниже среднего», «Форматировать только уникальные или повторяющиеся значения». Кроме того, почти все эти коды VBA имеют ряд особенностей и ограничений, из-за которых они могут работать некорректно с определенными книгами или типами данных. В общем, вы можете испытать удачу и поискать в Google идеальное решение, и если вы его найдете, пожалуйста, вернитесь и опубликуйте свое открытие здесь!
Но если пользовательская функция не может выполнить эту задачу, то макрос VBA вполне может справиться. О различиях пользовательских функций и макросов VBA вы можете более подробно прочитать в этой статье.
Приведенный ниже макрос VBA преодолевает вышеупомянутые ограничения и работает в электронных таблицах Microsoft Excel со всеми типами условного форматирования. Он отображает количество выделенных определенным цветом ячеек и сумму значений в этих ячейках, независимо от того, какой тип условного форматирования используется на листе.
Sub SumCountByConditionalFormat()
Dim indRefColor As Long
Dim cellCurrent As Object
Dim cntRes As Long
Dim sumRes
Dim cntCells As Long
Dim indCurCell As Long
cntRes = 0
sumRes = 0
Set cellCurrent = Selection
adr = Mid(cellCurrent.Address, InStr(cellCurrent.Address, ",") + 1, 20)
adr1 = Left(adr, 4)
adr2 = Left(cellCurrent.Address, InStr(cellCurrent.Address, ",") - 1)
Range(adr2).Activate
indRefColor = ActiveCell.DisplayFormat.Interior.Color
Range(adr).Activate
cntCells = Selection.CountLarge
Range(adr).Select
Range(adr).Activate
Set cellCurrent = Selection
For indCurCell = 1 To (cntCells - 1)
If indRefColor = cellCurrent(indCurCell).DisplayFormat.Interior.Color Then
cntRes = cntRes + 1
sumRes = WorksheetFunction.Sum(cellCurrent(indCurCell), sumRes)
End If
Next
MsgBox "Count=" & cntRes & vbCrLf & "Sum= " & sumRes & vbCrLf & vbCrLf & _
"Color=" & Left("000000", 6 - Len(Hex(indRefColor))) & _
Hex(indRefColor) & vbCrLf, , "Count & Sum by Conditional Format color"
End Sub
Как использовать этот макрос для подсчета цветных ячеек и суммирования их значений.
Опишем процесс пошагово:
- Добавьте приведенный выше код на лист, как описано в первом параграфе статьи .
- Выберите ячейку с нужным цветом.
- Нажмите и удерживайте
Ctrl
. - Выберите диапазон, в котором вы хотите подсчитать цветные ячейки и/или суммировать по цвету, если у вас есть числовые данные.
- Отпустите клавишу
Ctrl
. - НажНажмите комбинацию
Alt+F8
, чтобы открыть список макросов в вашей книге. - Выберите макрос SumCountByConditionalFormat и нажмите «Выполнить» .
Покажем эти действия на скриншотах. Используем пример данных, с которыми мы уже работали в первых параграфах этой статьи. Только теперь они окрашены в столбце В при помощи условного форматирования.
Сначала выбираем ячейку D5, поскольку хотим подсчитать ячейки красного цвета с просроченными заказами.
Затем дополнительно, удерживая Ctrl
, выделяем диапазон ячеек в столбце D, по которым нужно выполнить подсчет ячеек определенного цвета.
Выполняем макрос, как показано на скриншоте ниже.
В результате вы увидите следующее сообщение с результатами:
Для этого примера мы выбрали столбец «Количество» и получили следующие цифры:
- Count — это количество ячеек определенного цвета, красного в нашем случае, который отмечает ячейки «Просрочен».
- Sum — это сумма значений всех красных ячеек в выбранной колонке, т.е. общее количество «Просроченных» заказов.
- Color — это шестнадцатеричный код цвета выбранной ячейки, в нашем случае D5.
Таким образом мы можем посчитать сумму и количество по цвету ячеек с условным форматированием.
Самый быстрый способ подсчета и суммирования ячеек по цвету в Excel
Я могу рекомендовать вам надстройку для Excel, которая бы считала и суммировала ячейки по указанному вами цвету или по всем цветам в выбранном диапазоне.
При этом не имеет значения, как установлены эти цвета – прямым форматированием ячейки либо при помощи условного форматирования.
Позвольте представить вам наш совершенно новый инструмент — «Счет и сумма по цвету» для Excel. Он имеет два варианта подсчета — «Один цвет» и «Все цвета», как видно на скриншоте ниже.
Подсчет и суммирование по одному цвету.
Вы нажимаете кнопку « Один цвет » на ленте, и в левой части рабочего листа открывается панель « Подсчет и сумма по цвету» . На панели вы выбираете:
- Диапазон, в котором вы хотите подсчитать и суммировать ячейки
- Любую ячейку с нужным цветом как образец
- Вариант — цвет фона или шрифта
После этого нажмите « Рассчитать » и сразу же увидите результат в нижней части панели! Помимо подсчета и суммы, надстройка вычисляет среднее значение и находит максимальное и минимальное значения. Никаких макросов, никаких формул, никакой боли
Обратите внимание, что подсчет возможен как по цвету фона, так и по цвету шрифта.
Подсчет и суммирование ячеек по всем цветам в выбранном диапазоне
Опция «Все цвета» работает в основном так же, за исключением того, что вам не нужно выбирать цвет. В разделе «Result for ..» вы можете выбрать любой из параметров: Количество, Сумма, Среднее, Максимальное или Минимальное значение и другие.
Если вы хотите скопировать результаты на свой рабочий лист, нажмите кнопку «Paste All…» в нижней части панели .
В настоящее время надстройка доступна как часть Ultimate Suite for Excel . Это коллекция отличных инструментов, специально разработанных для решения самых утомительных, кропотливых и подверженных ошибкам задач в Excel.
В дополнение к надстройке «Подсчет и суммирование по цвету», Ultimate Suite включает более 70 инструментов, которые помогут вам объединить данные из разных листов, удалить дубликаты, сравнить листы на совпадения и различия и многое другое.
Надеюсь, теперь сумма по цвету и подсчет ячеек по цвету для вас не будут сложными. Если же будут вопросы – не стесняйтесь задавать их в комментариях.
Из этой статьи Вы узнаете, как в Excel посчитать количество и сумму ячеек определенного цвета. Этот способ работает как для ячеек, раскрашенных вручную, так и для ячеек с правилами условного форматирования. Кроме того, Вы научитесь настраивать фильтр по нескольким цветам в Excel 2010 и 2013.
Если Вы активно используете разнообразные заливки и цвет шрифта на листах Excel, чтобы выделять различные типы ячеек или значений, то, скорее всего, захотите узнать, сколько ячеек выделено определённым цветом. Если же в ячейках хранятся числа, то, вероятно, Вы захотите вычислить сумму всех ячеек с одинаковой заливкой, например, сумму всех красных ячеек.
Как известно, Microsoft Excel предоставляет набор функций для различных целей, и логично предположить, что существуют формулы для подсчёта ячеек по цвету. Но, к сожалению, не существует формулы, которая позволила бы на обычном листе Excel суммировать или считать по цвету.
Если не использовать сторонние надстройки, существует только одно решение – создать пользовательскую функцию (UDF). Если Вы мало знаете об этой технологии или вообще никогда не слышали этого термина, не пугайтесь, Вам не придётся писать код самостоятельно. Здесь Вы найдёте отличный готовый код (написанный нашим гуру Excel), и всё, что Вам потребуется сделать – это скопировать его и вставить в свою рабочую книгу.
- Считаем и суммируем по цвету, когда ячейки раскрашены вручную
- Считаем сумму и количество ячеек по цвету во всей книге
- Считаем и суммируем по цвету, когда к ячейкам применены правила условного форматирования
Содержание
- Как считать и суммировать по цвету на листе Excel
- Считаем сумму и количество ячеек по цвету во всей книге
- Пользовательские функции для определения кодов цвета заливки ячеек и цвета шрифта
- Функции, которые считают количество по цвету:
- Функции, которые суммируют значения по цвету ячейки:
- Функции, которые возвращают код цвета:
- Как посчитать количество и сумму ячеек по цвету, раскрашенных при помощи условного форматирования
- Как использовать код, чтобы посчитать количество цветных ячеек и просуммировать их значения
- Рабочая книга с примерами для скачивания
Как считать и суммировать по цвету на листе Excel
Предположим, у Вас есть таблица заказов компании, в которой ячейки в столбце Delivery раскрашены в зависимости от их значений: Due in X Days – оранжевые, Delivered – зелёные, Past Due – красные.
Теперь мы хотим автоматически сосчитать количество ячеек по их цвету, то есть сосчитать количество красных, зелёных и оранжевых ячеек на листе. Как я уже сказал выше, прямого решения этой задачи не существует. Но, к счастью, в нашей команде есть очень умелые и знающие Excel гуру, и один из них написал безупречный код для Excel 2010 и 2013. Итак, выполните 5 простых шагов, описанных далее, и через несколько минут Вы узнаете количество и сумму ячеек нужного цвета.
- Откройте книгу Excel и нажмите Alt+F11, чтобы запустить редактор Visual Basic for Applications (VBA).
- Правой кнопкой мыши кликните по имени Вашей рабочей книги в области Project – VBAProject, которая находится в левой части экрана, далее в появившемся контекстном меню нажмите Insert > Module.
- Вставьте на свой лист вот такой код:
Function GetCellColor(xlRange As Range) Dim indRow, indColumn As Long Dim arResults() Application.Volatile If xlRange Is Nothing Then Set xlRange = Application.ThisCell End If If xlRange.Count > 1 Then ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count) For indRow = 1 To xlRange.Rows.Count For indColumn = 1 To xlRange.Columns.Count arResults(indRow, indColumn) = xlRange(indRow, indColumn).Interior.Color Next Next GetCellColor = arResults Else GetCellColor = xlRange.Interior.Color End If End Function Function GetCellFontColor(xlRange As Range) Dim indRow, indColumn As Long Dim arResults() Application.Volatile If xlRange Is Nothing Then Set xlRange = Application.ThisCell End If If xlRange.Count > 1 Then ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count) For indRow = 1 To xlRange.Rows.Count For indColumn = 1 To xlRange.Columns.Count arResults(indRow, indColumn) = xlRange(indRow, indColumn).Font.Color Next Next GetCellFontColor = arResults Else GetCellFontColor = xlRange.Font.Color End If End Function Function CountCellsByColor(rData As Range, cellRefColor As Range) As Long Dim indRefColor As Long Dim cellCurrent As Range Dim cntRes As Long Application.Volatile cntRes = 0 indRefColor = cellRefColor.Cells(1, 1).Interior.Color For Each cellCurrent In rData If indRefColor = cellCurrent.Interior.Color Then cntRes = cntRes + 1 End If Next cellCurrent CountCellsByColor = cntRes End Function Function SumCellsByColor(rData As Range, cellRefColor As Range) Dim indRefColor As Long Dim cellCurrent As Range Dim sumRes Application.Volatile sumRes = 0 indRefColor = cellRefColor.Cells(1, 1).Interior.Color For Each cellCurrent In rData If indRefColor = cellCurrent.Interior.Color Then sumRes = WorksheetFunction.Sum(cellCurrent, sumRes) End If Next cellCurrent SumCellsByColor = sumRes End Function Function CountCellsByFontColor(rData As Range, cellRefColor As Range) As Long Dim indRefColor As Long Dim cellCurrent As Range Dim cntRes As Long Application.Volatile cntRes = 0 indRefColor = cellRefColor.Cells(1, 1).Font.Color For Each cellCurrent In rData If indRefColor = cellCurrent.Font.Color Then cntRes = cntRes + 1 End If Next cellCurrent CountCellsByFontColor = cntRes End Function Function SumCellsByFontColor(rData As Range, cellRefColor As Range) Dim indRefColor As Long Dim cellCurrent As Range Dim sumRes Application.Volatile sumRes = 0 indRefColor = cellRefColor.Cells(1, 1).Font.Color For Each cellCurrent In rData If indRefColor = cellCurrent.Font.Color Then sumRes = WorksheetFunction.Sum(cellCurrent, sumRes) End If Next cellCurrent SumCellsByFontColor = sumRes End Function
- Сохраните рабочую книгу Excel в формате .xlsm (Книга Excel с поддержкой макросов).Если Вы не слишком уверенно чувствуете себя с VBA, то посмотрите подробную пошаговую инструкцию и массу полезных советов в учебнике Как вставить и запустить код VBA в Excel.
- Когда все закулисные действия будут выполнены, выберите ячейки, в которые нужно вставить результат, и введите в них функцию CountCellsByColor:
CountCellsByColor(диапазон, код_цвета)
В этом примере мы используем формулу =CountCellsByColor(F2:F14,A17), где F2:F14 – это диапазон, содержащий раскрашенные ячейки, которые Вы хотите посчитать. Ячейка A17 – содержит определённый цвет заливки, в нашем случае красный.
Точно таким же образом Вы записываете формулу для других цветов, которые требуется посчитать в таблице (жёлтый и зелёный).
Если в раскрашенных ячейках содержатся численные данные (например, столбец Qty. в нашей таблице), Вы можете суммировать значения на основе выбранного цвета ячейки, используя аналогичную функцию SumCellsByColor:
SumCellsByColor(диапазон, код_цвета)
Как показано на снимке экрана ниже, мы использовали формулу:
=SumCellsByColor(D2:D14,A17)
где D2:D14 – диапазон, A17 – ячейка с образцом цвета.
Таким же образом Вы можете посчитать и просуммировать ячейки по цвету шрифта при помощи функций CountCellsByFontColor и SumCellsByFontColor соответственно.
Замечание: Если после применения выше описанного кода VBA Вам вдруг потребуется раскрасить ещё несколько ячеек вручную, сумма и количество ячеек не будут пересчитаны автоматически после этих изменений. Не ругайте нас, это не погрешности кода 🙂
На самом деле, это нормальное поведение макросов в Excel, скриптов VBA и пользовательских функций (UDF). Дело в том, что все подобные функции вызываются только изменением данных на листе, но Excel не расценивает изменение цвета шрифта или заливки ячейки как изменение данных. Поэтому, после изменения цвета ячеек вручную, просто поставьте курсор на любую ячейку и кликните F2, а затем Enter, сумма и количество после этого обновятся. Так нужно сделать, работая с любым макросом, который Вы найдёте далее в этой статье.
Считаем сумму и количество ячеек по цвету во всей книге
Представленный ниже скрипт Visual Basic был написан в ответ на один из комментариев читателей (также нашим гуру Excel) и выполняет именно те действия, которые упомянул автор комментария, а именно считает количество и сумму ячеек определённого цвета на всех листах данной книги. Итак, вот этот код:
Function WbkCountCellsByColor(cellRefColor As Range) Dim vWbkRes Dim wshCurrent As Worksheet Application.ScreenUpdating = False Application.Calculation = xlCalculationManual vWbkRes = 0 For Each wshCurrent In Worksheets wshCurrent.Activate vWbkRes = vWbkRes + CountCellsByColor(wshCurrent.UsedRange, cellRefColor) Next Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic WbkCountCellsByColor = vWbkRes End Function Function WbkSumCellsByColor(cellRefColor As Range) Dim vWbkRes Dim wshCurrent As Worksheet Application.ScreenUpdating = False Application.Calculation = xlCalculationManual vWbkRes = 0 For Each wshCurrent In Worksheets wshCurrent.Activate vWbkRes = vWbkRes + SumCellsByColor(wshCurrent.UsedRange, cellRefColor) Next Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic WbkSumCellsByColor = vWbkRes End Function
Добавьте этот макрос точно также, как и предыдущий код. Чтобы получить количество и сумму цветных ячеек используйте вот такие формулы:
=WbkCountCellsByColor()
=WbkSumCellsByColor()
Просто введите одну из этих формул в любую пустую ячейку на любом листе Excel. Диапазон указывать не нужно, но необходимо в скобках указать любую ячейку с заливкой нужного цвета, например, =WbkSumCellsByColor(A1), и формула вернет сумму всех ячеек в книге, окрашенных в этот же цвет.
Пользовательские функции для определения кодов цвета заливки ячеек и цвета шрифта
Здесь Вы найдёте самые важные моменты по всем функциям, использованным нами в этом примере, а также пару новых функций, которые определяют коды цветов.
Замечание: Пожалуйста, помните, что все эти формулы будут работать, если Вы уже добавили в свою рабочую книгу Excel пользовательскую функцию, как было показано ранее в этой статье.
Функции, которые считают количество по цвету:
CountCellsByColor(диапазон, код_цвета)
– считает ячейки с заданным цветом заливки.В примере, рассмотренном выше, мы использовали вот такую формулу для подсчёта количества ячеек по их цвету:=CountCellsByColor(F2:F14,A17)
где F2:F14 – это выбранный диапазон, A17 – это ячейка с нужным цветом заливки.
Все перечисленные далее формулы работают по такому же принципу.
CountCellsByFontColor(диапазон, код_цвета)
– считает ячейки с заданным цветом шрифта.
Функции, которые суммируют значения по цвету ячейки:
SumCellsByColor(диапазон, код_цвета)
– вычисляет сумму ячеек с заданным цветом заливки.SumCellsByFontColor(диапазон, код_цвета)
– вычисляет сумму ячеек с заданным цветом шрифта.
Функции, которые возвращают код цвета:
GetCellFontColor(ячейка)
– возвращает код цвета шрифта в выбранной ячейке.GetCellColor(ячейка)
– возвращает код цвета заливки в выбранной ячейке.
Итак, посчитать количество ячеек по их цвету и вычислить сумму значений в раскрашенных ячейках оказалось совсем не сложно, не так ли? Но что если Вы не раскрашиваете ячейки вручную, а предпочитаете использовать условное форматирование, как мы делали это в статьях Как изменить цвет заливки ячеек и Как изменить цвет заливки строки, основываясь на значении ячейки?
Как посчитать количество и сумму ячеек по цвету, раскрашенных при помощи условного форматирования
Если Вы применили условное форматирование, чтобы задать цвет заливки ячеек в зависимости от их значений, и теперь хотите посчитать количество ячеек определённого цвета или сумму значений в них, то у меня для Вас плохие новости – не существует универсальной пользовательской функции, которая будет по цвету суммировать или считать количество ячеек и выводить результат в определённые ячейки. По крайней мере, я не слышал о таких функциях, а жаль 🙁
Конечно, Вы можете найти тонны кода VBA в интернете, который пытается сделать это, но все эти коды (по крайней мере, те экземпляры, которые попадались мне) не обрабатывают правила условного форматирования, такие как:
- Format all cells based on their values (Форматировать все ячейки на основании их значений);
- Format only top or bottom ranked values (Форматировать только первые или последние значения);
- Format only values that are above or below average (Форматировать только значения, которые находятся выше или ниже среднего);
- Format only unique or duplicate values (Форматировать только уникальные или повторяющиеся значения).
Кроме того, практически все эти коды VBA имеют целый ряд особенностей и ограничений, из-за которых они могут не работать корректно с какой-то конкретной книгой или типами данных. Так или иначе, Вы можете попытать счастье и google в поисках идеального решения, и если Вам удастся найти его, пожалуйста, возвращайтесь и опубликуйте здесь свою находку!
Код VBA, приведённый ниже, преодолевает все указанные выше ограничения и работает в таблицах Microsoft Excel 2010 и 2013, с любыми типами условного форматирования (и снова спасибо нашему гуру!). В результате он выводит количество раскрашенных ячеек и сумму значений в этих ячейках, независимо от типа условного форматирования, применённого на листе.
Sub SumCountByConditionalFormat() Dim indRefColor As Long Dim cellCurrent As Range Dim cntRes As Long Dim sumRes Dim cntCells As Long Dim indCurCell As Long cntRes = 0 sumRes = 0 cntCells = Selection.CountLarge indRefColor = ActiveCell.DisplayFormat.Interior.Color For indCurCell = 1 To (cntCells - 1) If indRefColor = Selection(indCurCell).DisplayFormat.Interior.Color Then cntRes = cntRes + 1 sumRes = WorksheetFunction.Sum(Selection(indCurCell), sumRes) End If Next MsgBox "Count=" & cntRes & vbCrLf & "Sum= " & sumRes & vbCrLf & vbCrLf & _ "Color=" & Left("000000", 6 - Len(Hex(indRefColor))) & _ Hex(indRefColor) & vbCrLf, , "Count & Sum by Conditional Format color" End Sub
Как использовать код, чтобы посчитать количество цветных ячеек и просуммировать их значения
- Добавьте код, приведённый выше, на Ваш лист, как мы делали это в первом примере.
- Выберите диапазон (или диапазоны), в которых нужно сосчитать цветные ячейки или просуммировать по цвету, если в них содержатся числовые данные.
- Нажмите и удерживайте Ctrl, кликните по одной ячейке нужного цвета, затем отпустите Ctrl.
- Нажмите Alt+F8, чтобы открыть список макросов в Вашей рабочей книге.
- Выберите макрос SumCountByConditionalFormat и нажмите Run (Выполнить).В результате Вы увидите вот такое сообщение:
Для этого примера мы выбрали столбец Qty. и получили следующие цифры:
- Count – это число ячеек искомого цвета; в нашем случае это красноватый цвет, которым выделены ячейки со значением Past Due.
- Sum – это сумма значений всех ячеек красного цвета в столбце Qty., то есть общее количество элементов с отметкой Past Due.
- Color – это шестнадцатеричный код цвета выделенной ячейки, в нашем случае D2.
Рабочая книга с примерами для скачивания
Если у Вас возникли трудности с добавлением скриптов в рабочую книгу Excel, например, ошибки компиляции, не работающие формулы и так далее, Вы можете скачать рабочую книгу Excel с примерами и с готовыми к использованию функциями CountCellsByColor и SumCellsByColor, и испытать их на своих данных.
Оцените качество статьи. Нам важно ваше мнение:
Sometimes you may use different colored cells in Google Sheets to represent categories. This makes your data easy to read. In such cases, it can be useful to count the cells based on the cell’s color. For instance, we have a list of student names and they’re colored. If the cell is red in color, the student is absent. If the cell is green in color, the student is present.
If you want to know the number of students present, it’d be useful if you could simply count the green-colored cells, right? So we will show you how to do that in easy steps, plus there are four different ways in which you can count the colored cells.
Let us begin!
4 Methods of Counting Colored Cells in MS Excel:
- Using SUBTOTAL and filters
- Using VBA code
- Using the FIND function
- Using COUNTIF and GET.CELL
Method #1: Using SUBTOTAL and Filters
This method uses the SUBTOTAL formula to calculate the total number of cells. You can then use the filter to only see cells of a particular color.
Step #1: Pick a cell to display the count
Select a cell where you want to see the results of counting all the colored cells.
In our example, we’ve chosen C1 to display the count. You can see the selected cell in the Name Box on the top left corner just below the toolbar.
Step #2: Apply the SUBTOTAL formula
Capture the subtotal formula in cell C1.
The formula is [=SUBTOTAL(function_name, ref1)].
function_name is represented by numeric values 1 to 11 and 101 to 111.
For this purpose, you can use either 102 or 103. You can use 102 if you’re counting cells with numeric data. You can use 103 if you’re counting cells with text data.
Click on cell C1.
Go to the Formulas tab in the top menu bar and select Math & Trig, scroll down to SUBTOTAL and click on it.
Now, fill the Function_num and Ref1 fields and click on OK.
For our example, we will use function_num 103 and the Fields are A2 to A20 (A2:A20).
Here, the formula would be =SUBTOTAL(103, A2:A20).
Alternatively, you can directly type the formula into the cell.
Step #3: Press Enter
If you have used the inserted the formula using the menu bar, click on the OK button.
If you have typed in the formula, press Enter to see the formula in action.
You would now see the total count of all the cells.
Note: The SUBTOTAL formula with function numbers between 101 and 111 calculates visible cells. If you use another formula, it will count the number of cells regardless if they are visible or not.
Step #4: Apply filter by cell color
Now let’s apply a filter for the green-colored cells to get the count of students who are present.
Under the main menu Home tab, click Sort & Filter, and then from the dropdown, select Filter.
Alternatively, you can click on the alphabetic header row and press Ctrl+Shift+L.
Once you have applied a filter to your table, you will see a small block with a downward pointing arrow next to each header cell. This is the Filter Icon.
Click on the Filter Icon.
Select Filter by Color.
Click on the color you want to filter and have visible.
In our example, we picked the green color.
Click on the OK button.
You will now only see the green-colored cells in Excel.
In addition, the SUBTOTAL formula in C1 now only gives you the total number of green cells.
Method #2: Using VBA code
In this method, you create a custom or user-defined function. With the created function, you can count the colored cells.
Step #1: Select Visual Basic
Go to the Developer tab in the main menu bar and select Visual Basic.
Step #2: Create a module
You can now see a visual basic application dialog box.
Click on the minus sign at the top left.
Click on Insert and from the submenu that appears, select Module.
Step #3: Copy-paste the VBA code
Once you click on Module, a dialog box will be launched. Copy the following 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
Source
Now paste the code into the dialog box.
Close the dialog box by clicking on the red X icon at the top-right corner.
Step #4: Apply the code in your spreadsheet
Color two cells, the same as the source formatting. In our example, that would be red and green.
C2 is red in color and D2 will represent the number of red-colored cells.
C3 is green in color and D3 will represent the number of green-colored cells.
Place your cursor in D2, and enter the formula =Color_Cell_Count(C2, A2:A20).
C2 represents a cell with the color you want to count, while A2:A20 represents the range of cells to be counted.
Step #5: Press Enter
Press Enter to see the count.
Similarly, copy the same formula onto the next cell to find the number of green-colored cells.
Method #3: Using the FIND function
In this method, you use the FIND function to get the number of cells based on formatting. Here, the formatting is colored cells.
Step #1: Select the range of cells
Select the range of cells by clicking and dragging your cursor across them.
The Name Box will show you the selected range.
Step #2: Open ‘Find and Replace’ dialog box
Press Ctrl and the letter F on your keyboard simultaneously to open the Find and Replace dialog box.
Select Options in the dialog box.
Step #3: Go to ‘Format’
Click on the Format button.
This will open the Find Format dialog box.
Step #4: Select ‘Choose Format From Cell’
In the Find Format dialog box, at the bottom you will see the ‘Choose Format From Cell…’ option.
Click on it.
The window will now minimize, and your mouse cursor will change to look like a pen icon.
Tap on any cell with the color that you want to count.
In our example, we pick a green-colored cell.
Step #5: Select ‘Find All’
The Find and Replace window will now open again, where you will see the chosen color in Preview.
Click on the Find All button to find all such cells with the same format.
You will see a list of all the green-colored cells along with their count at the bottom of the window.
Method #4: Using COUNTIF and GET.CELL
In this method, we first get the unique color code and then count the cells using the color code.
Step #1: Go to ‘Formulas’ and click on ‘Define Name’
In the Formulas tab in the main menu bar, click on Define Name.
Select Define Name again from the dropdown that appears.
Step #2: Enter details for Define Name
A new window will appear, with fields to be completed.
In the Name: field, enter any name you like. Here, we’ve entered ColorCode.
Type the formula =GET.CELL(38,Sheet1!$A2) in the ‘Refers to:’ field.
In our example, 38 represents the unique color number in Excel.
The next parameter is the cell reference, i.e. cell A2 in Sheet 1.
Click on the OK button once you’re done.
Step #3: Get the color code
Now go to your Excel sheet.
In the next column, B, in our example, enter =ColorCode.
In your case you would use the name you assigned.
Now, drag the fill handle across all the rows with data. The fill handle is a the little square at the bottom right of your selected cell.
This would ensure you get the code for all your colored cells.
Step #4: Apply the COUNTIF formula
In column D, fill two cells with the same colors as in Column A.
Next you will count the different colors matching the colors in column D.
Place your cursor in column E, next to the colored cell in column D, and enter the formula.
The formula is =COUNTIF(range, criteria).
We use the color code to calculate.
In our example, the range is from B2 to B20.
Criteria is the name we created, ColorCode.
Therefore our formula would become =COUNTIF(B2:B20, ColorCode).
Step #5: Press Enter
Once you’re done entering the formula, press Enter.
This will give you the count of cells with the color in the cell left to it.
Drag the fill handle down to the next cell, to get the count for the other color as well.
The Bottom Line
No more struggling to count the number of colored cells. These four methods will help you get the count of the colored cells in no time!
Содержание
- Count Colored Cells in Excel
- 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
- How to Count Colored or Highlighted Cells in Excel
- Using Subtotal and Filter functions
- Using COUNTIF and GET.CELL functions
- Using VBA
- How to sum and count cells by color in Excel
- How to count cells by color in Excel
- Count cells by fill color
- Count cells by font color
- How to sum by color in Excel
- Sum values by cell color
- Sum values by font color
- Count and sum by color across entire workbook
- How to count colored cells in entire workbook
- How to sum colored cells in whole workbook
- Count and sum conditionally formatted cells
- How to count and sum conditionally formatted cells using VBA macro
- How to get cell color in Excel
- Get fill color of a cell
- Get font color of a cell
- Get hexadecimal color code of a cell
- How to insert VBA code in your workbook
- How to get custom functions to update
- Fastest way to calculate colored cells in Excel
- Sum and count cells by one color
- Count and sum all colored cells at once
Count Colored Cells in Excel
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.
- Count colored cells by using the Auto Filter option
- Count colored cells by using the VBA code
- Count colored cells by using the FIND method
Table of contents
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.
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.
At the bottom of the data, we need to apply the SUBTOTAL function in Excel to count cells.
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.
As we can see, all the colors in the data. Now, we must choose the color that we want to filter.
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.
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 code VBA Code VBA 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:
Then, copy and paste the above code to your module.
The first line of the code “Color_Cell_Count” is the function name. Now, we must create three cells and color them as below.
Now, we must open the function “Color_Cell_Count” in the G2 cell.
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.
The second argument is to select the range of cells as D2:D19.
Now, close the bracket and press the “Enter” key. As a result, it will provide the count of cells with the selected cell color.
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.
- Step 2: Now, we need to press Ctrl + F to open the FIND dialog box.
- Step 3: Now, click on “Options>>.”
- Step 4: Consequently, it will expand the “Find” dialog box. Now, we must click on the “Format” option.
- Step 5: Now, it will open up the “Find Format” dialog box. We need to click on the “Choose Format From Cell” option.
- Step 6: Now, move the mouse pointer to see the pointer to select the format cell in excelFormat 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.
- 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.
- Step 8: Now, click on the “Find All” option to get the count of the selected cell format count of cells.
So, a total of 6 cells were found with selected formatting colors.
Things to Remember
- The provided VBA code is not a Subprocedure in VBASubprocedure 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: –
Источник
How to Count Colored or Highlighted Cells in Excel
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:
- Applying SUBTOTAL and filtering the data
- Using the COUNT and GET.CELL function
- 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:
- 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:
- 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.
Источник
How to sum and count cells by color in Excel
by Svetlana Cheusheva, updated on January 20, 2023
In this article, you will learn new effective approaches to summing and counting cells in Excel by color. These solutions work for cells colored manually and with conditional formatting in all versions of Excel 2010 through Excel 365.
Even though Microsoft Excel has a variety of functions for different purposes, none can calculate cells based on their color. Aside from third-party tools, there is only one efficient solution — create your own functions. If you know very little about user-defined functions or have never heard of this term before, don’t panic. The functions are already written and tested by us. All you need to do is to insert them in your workbook 🙂
How to count cells by color in Excel
Below, you can see the codes of two custom functions (technically, these are called user-defined functions or UDF). The first one is purposed for counting cells with a specific fill color and the other — font color. Both are written by Alex, one of our best Excel gurus.
Custom functions to count by color in Excel
Once the functions are added to your workbook, they will do all work behind the scenes, and you can use them in the usual way, just like any other native Excel function. From the end-user perspective, the functions have the following look.
Count cells by fill color
To count cells with a particular background color, this is the function to use:
- Data_range is a range in which to count cells.
- Cell_color is a reference to the cell with the target fill color.
To count cells of a specific color in a given range, carry out these steps:
- Insert the code of the CountCellsByColor function in your workbook.
- In a cell where you want the result to appear, start typing the formula: =CountCellsByColor(
- For the first argument, enter the range in which you want to count colored cells.
- For the second argument, supply the cell with the target color.
- Press the Enter key. Done!
For example, to find out how many cells in range B3:F24 have the same color as H3, the formula is:
In our sample dataset, the cells with values less than 150 are colored in yellow, and the cells with values higher than 350 in green. The function gets both counts with ease:
Count cells by font color
In case your cell values have different font colors, you can count them using this function:
- Data_range is a range in which to count cells.
- Font_color is a reference to the cell with the sample font color.
For example, to get the number of cells in B3:F24 whose values have the same font color as H3, the formula is:
=CountCellsByFontColor(B3:F24, H3)
Tip. If you’d like to name the functions differently, feel free to change the names directly in the code.
How to sum by color in Excel
To sum colored values, add the following two functions to your workbook. As with the previous example, the first one handles fill color and the other — font color.
Custom functions to sum by color in Excel
Sum values by cell color
To sum by fill color in Excel, this is function to use:
- Data_range is a range in which to sum values.
- Cell_color is a reference to the cell with the fill color of interest.
For example, to add up the values of all cells in B3:F24 that are shaded with the same color as H3, the formula is:
=SumCellsByColor(B3:F24, H3)
Sum values by font color
To sum numeric values with a specific font color, use this function:
- Data_range is a range in which to sum cells.
- Font_color is a reference to the cell with the target font color.
For instance, to add up all the values in cells B3:F24 with the same font color as the value in H3, the formula is:
=SumCellsByFontColor(B3:F24, H3)
Count and sum by color across entire workbook
To count and sum cells of a certain color in all sheets of a given workbook, we created two separate functions, which are named WbkCountByColor and WbkSumByColor, respectively. Here comes the code:
Custom functions to count and sum by color across workbook
Note. To make the functions’ code more compact, we refer to the two previously discussed functions that count and sum within a specified range. So, for the «workbook functions» to work, be sure to add the code of the CountCellsByColor and SumCellsByColor functions to your Excel too.
How to count colored cells in entire workbook
To find out how many cells of a particular color there are in all sheets of a given workbook, use this function:
The function takes just one argument — a reference to any cell filled with the color of interest. So, a real-life formula may look something like this:
Where A1 is the cell with the sample fill color.
How to sum colored cells in whole workbook
To get a total of values in all cells of the current workbook highlighted with a particular color, use this function:
Assuming the target color is in cell B1, the formula takes this form:
Count and sum conditionally formatted cells
The custom functions for adding up and counting color-coded cells are really nice, aren’t they? The problem is that they do not work for cells colored with conditional formatting, alas 🙁
To handle conditional formatting, we have written a different code (kudos to Alex again!). It works well with both preset formats and custom formula-based rules. Contrasting with the previous examples, this code is a macro, not a function. The macro counts and sums conditionally formatted cells by fill color. Please insert it in your VBA Editor, and then follow the below instructions.
VBA macro to count and sum conditionally formatted cells.
How to count and sum conditionally formatted cells using VBA macro
With the macro’s code inserted in your Excel, this is what you need to do:
- Select one or more ranges where you want to count and sum colored cells. Make sure the selected range(s) contains numerical data.
- Press Alt + F8 , select the SumCountByConditionalFormat macro in the list, and click Run.
- A small dialog box will pop asking you to select a cell with the sample color. Do this and click OK.
For this example, we used the inbuilt Highlight Cell Rules and got the following results:
- Count (12) the number of cells in range B2:E22 with the same color as G3.
- Sum (1512) is the sum of values in cells formatted with Light Red Fill.
- Color is a hexadecimal color code of the sample cell.
Tip. The sample workbook with the SumCountByConditionalFormat macro is available for download at the end of this post.
How to get cell color in Excel
If you need (or are curious) to know the color of a specific cell (fill or font color), add the following user-defined functions to your Excel. It returns ColorIndex as a decimal number.
Custom functions to get the cell color
Note. The functions only work for colors applied manually, and not with conditional formatting.
Get fill color of a cell
To return a decimal code of the color a given cell is highlighted with, make use of this function:
For example, to get the color of cell A2, the formula is:
Get font color of a cell
To get a font color of a cell, use an analogous function:
For instance, to find the font color of cell E2, the formula is:
Get hexadecimal color code of a cell
To convert a decimal color index returned by our custom functions into a hexadecimal color code, make use of Excel’s native DEC2HEX function.
=»#»&DEC2HEX(GetFontColor(E2))
How to insert VBA code in your workbook
To add the function’s or macro’s code to your Excel, move on with these 4 steps:
- In your workbook, press Alt + F11 to open Visual Basic Editor.
- In the left pane, right-click on the workbook name, and then choose Insert >Module from the context menu.
- In the Code window, insert the code of the desired function(s):
- Count by color: CountCellsByColor and CountCellsByFontColor functions
- Sum by color: SumCellsByColor and SumCellsByFontColor functions
- Count and sum colored cells in whole workbook: WbkCountByColor and WbkSumByColor functions
- Count and sum conditionally formatted cells: SumCountByConditionalFormat function
- Get color code: GetCellColor and GetFontColor functions
- Save your file as Macro-Enabled Workbook (.xlsm).
If you are not very comfortable with VBA, you can find the detailed step-by-step instructions and a handful of useful tips in this tutorial: How to insert and run VBA code in Excel.
How to get custom functions to update
When summing and counting color-coded cells in Excel, please keep in mind that your formulas won’t recalculate automatically after coloring a few more cells or changing existing colors. Please don’t be angry with us, this is not a bug in our code 🙂
The point is that changing cell color in Excel does not trigger worksheet recalculation. To get the formulas to update, press either F9 to recalculate all open workbooks or Shift + F9 to recalculate only the active sheet. Or just place the cursor into any cell and press F2, and then hit Enter. For more information, please see How to force recalculation in Excel.
Fastest way to calculate colored cells in Excel
If you do not want to waste time tinkering with VBA codes, I’m happy to introduce you to our very simple but powerful Count & Sum by Color tool. Together with 70+ other time-saving add-ins, it is included with Ultimate Suite for Excel.
Once installed, you will find it on the Ablebits Tools tab of your Excel ribbon:
And here is a short summary of what the Count & Sum by Color add-in can do:
- Count and sum cells by color in all versions of Excel 2016 — Excel 365.
- Find average, maximum and minimum values in the colored cells.
- Handle cells colored manually and with conditional formatting.
- Paste the results anywhere in a worksheet as values or formulas.
Sum and count cells by one color
Selecting the Sum & Count by One Color option will open the following pane in the left part of your worksheet. You specify the source range and sample cell, then then click Calculate.
The result will appear on the pane straight away! No macros, no formulas, no pain 🙂
Apart from count and sum, the add-in also shows Average, Max and Min for colored numbers. To insert a particular value in the sheet, click the Paste button next to it. Or click Paste All to have all the results inserted at once:
Count and sum all colored cells at once
To handle all colored cells at a time, choose the Sum & Count by All Color option. Basically, it works in the same way, except that instead of color, you choose the function to calculate.
Tip. To have the results inserted in the worksheet as formulas (custom functions), check the corresponding box at the bottom of the pane.
Well, calculating colored cells in Excel is pretty easy, isn’t it? Of course, if you have that little gem that makes the magic happen 🙂 Curious to see how our add-in will cope with your colored cells? The download link is right below.
Источник