Even though Microsoft Excel has a variety of functions for different purposes, none can count or sum by color of a cell. Aside from third-party tools, there is only one possible solution - create your own functions. Continue reading
by Svetlana Cheusheva, updated on
Even though Microsoft Excel has a variety of functions for different purposes, none can count or sum by color of a cell. Aside from third-party tools, there is only one possible solution - create your own functions. Continue reading
Comments page 23. Total comments: 838
hello there, wondering if I can get some assistance. I want to be able to add all "points" from each location in one colum, however, each month the place of each location will very, so i want to be able to get a formula where it can be added no matter where the location number is at.
this is kind of an example of data am working with.
Location Quota Points Location Quota Points LocationPoints
4014 141.00% 20 4006 46.00% 20 4006
4022 141.00% 16 4016 44.00% 16 4016
4003 130.00% 15 4022 43.00% 15 4003
4016 127.00% 14 4014 42.00% 14 4014
4006 126.00% 13 4003 41.00% 13 4022
is there a way to figure add this up with out having to arrange them in least to greater?
Hello Fabiola,
It is difficult to understand your task because your data are distorted in the comment. If you can send us your workbook at support@ablebits.com and include the result you want to achieve, we'll try to work our a proper formula.
Hi, I used the VBA code and formula to count colored cells. I have 6 colors. Four of them calculate correctly, but 2 do not (extra cells are counted). What can I do to correct the error?
Thank you.
Hi Kayla,
It is difficult to say why this happens without seeing your data. Please send your workbook at support@ablebits.com and we'll look into the issue. Also, please check if the specified range doesn't include the cell that you chose as a color sample.
Thank you, I've just emailed Support.
Hi Kayla,
Thank you for your worksheet.
The point is that your worksheet contains some merged cells, and our formulas count each individual cell that was merged.
I just tried this macro and it works well. thanks you
Is there a way to count cells of a specific color and containing a specific text? Say the name Bill appears on a sheet 10 times and 5 of the cells have been manually colored red. Is there a way to count how many times cells containing the text "Bill" and background filled red?
Hi Brian,
Yes, this is possible now, we've updated the code of the functions. Please copy the updated code to your workbook and then enter the following array formula (remember to press Ctrl + Shift + Enter to complete it):
=SUM((A1:B13="Bill")*(GetCellColor(A1:B13)=GetCellColor(D1)))
Where A1:B13 is the range where you want to count the occurrence of the word "Bill", and
D1 is the helper cell with the color sample, e.g. red.
You can also type =GetCellColor(D1) in any cell, copy the result and paste it to your formula instead of calling GetCellColor(D1). In this case you don't need the helper cell.
=COUNTIFS(A1:L326, A330, A1:L326, getcellcolor(A330))
Tried this and got "0" when, in fact there were 2 that met the criteria.
A330 is a text value of a person's name as well as being filled with the reference color. I have tried it with "text value of 330" and "=text value of A330".
I have implemented your script and the patch to actively update the cell data and it works perfectly. When I reference that data in another cell it doesn't update the data without me forcing the update. By the way Ctrl+Alt+F9 will update the cells. No need to click in the cells to accomplish the data refresh. Is there another line I can add to the script to keep the referenced data active as well?
Hi Brian,
Can you please send your sample workbook to Alex (alex@ablebits.com) and describe the use case step-by-step. In this way it will be easier for us to reproduce the scenario and suggest a fix.
Great stuff! Saved me a lot of time!!
Thanks a ton.
hi
how to protect the particular column and cell in the excel 2007
i dont want whole sheet protect only particular cell i want
Hi Sindhoor,
You can find a way in this article:
https://office.microsoft.com/en-001/excel-help/lock-cells-in-a-worksheet-HA010342979.aspx
Hi Svetlana,
I thank you for the amazing tool. It is working well.
I wanted to find out how do i count colored merged cells. I am creating a dashboard for data.
Can you please help me.
I thank you
Hi Arshad,
We have not tested the code on merged cells, but in theory it should work properly, i.e. a merged cell shall be calculated as one cell. Does function behave differently on your data?
Hi!
Thank you for this script! I had problems when I tried to use it on Excel 2010. Excel said that it isn't valid formula and it has some errors.
But then I replaced "," --> ";" and it worked (like this: =SumCellsByColor(D2:D14;A17).
Hi!
Most likely this is because you have the List Separator set to ";" in your Windows Regional Settings, so you should use a semicolon in all of your Excel formulas.
I think it would be quite beneficial to mention this comma vs. semicolon option in the tutorial. It would have saved me a lot of time.. Thanks for the functions anyway, now that I got them working by replacing "," with ";" :)
Just to follow up on my previous comment. I had already found http://www.get-digital-help.com/2013/10/02/counting-conditionally-formatted-cells-vba/ which works great in their example. We have pretty complicated conditional formatting on multiple cells. If I choose more than a row or a column or have a cell in the range that does not have the conditional formatting, I get a #Value. I do not really understand why theirs works as a function, but in a limited fashion, and yours works all the time as a sub...
Hello Shelli,
I have not tested their code, but it looks like it works only with conditional formatting rules based on formulas that changed the cell's background color, if true. I am not sure it will work with color scales. This code should also be checked with regard to min/max/duplicates.
Also, the code implies that each conditional formatting rule found in the selected range applies to ALL selected cells. If it is not so, then the code will return #Value or even throw some VBA execution error.
So confused about the "How to count by color and sum cells colored using conditional formatting" needing to be a sub and not a function. Not sure I understand what the limitation is. I am still playing with it. Works perfectly as a sub but need to get the count in a cell.
Hello Shelli,
Regrettably, there is no easy way to implement this as a function. I mean the function that would correctly handle all possible variations of conditional formatting. This would require a great deal of VBA code, tedious debugging and testing against different Excel versions and various Office localizations. (That is why the other solution you've tried works in simple scenarios and does not work with complex conditional formatting).
So, our Excel specialists have weighed the pros and cons and created the Count & Sum add-in, which caters for all possible scenarios and works correctly with all Excel versions and all kinds of conditional formatting. You can download the evaluation version and try it out on your data.
Great stuff! Exactly what I was looking for...
Thank you so much!
Many thanks for this article. The instructions, code and functionality were excellent and exactly what I was looking for.
Or better still - how can I build a sumif formula around coloured cells. For example =sumif(range, [CellColour], [sum_range])?
You can use the SumCellsByColor function to sum the values of cells of a given color in the selected range. Or, are you looking for something different?
Hi Svetlana,
Yes, looking for something a bit different, the cells that contain the values I want to sum are in a different row to the coloured cells so would be looking to do a calculation similar to the sumif function
Cheers
Hi Wazza,
Thank you for the clarification, I understand now. Regrettably, this is not possible because our functions do not support array formulas.
This is genius. However, would vlookup and hlookup by cell colour be possible. For example, =vlookup([CellColour],table_array, column_index_num, [range_lookup])?
Hello Wazza,
You need to add only one function to your workbook – GetCellColor. Then add an additional column to your lookup table, this should be the first, i.e. left-most column, and copy the following formula to it: =GetCellColor(F2). F2 is the needed cell color.
An then, you use this formula =vlookup(GetCellColor(A1).... where A1 is the color-coded cell.
Thanks for the prompt response. It worked. Hopefully, the add in that you / Aex is developing will work in both scenarios. Keep up the good work guys. Thanks
Hi Samir,
Our new add-in, Count & Sum by Color, is finished and available for download. And yes, it works in both scenarios and in all versions of Excel!
sorry - im new to excel :|
here's an example - i wanted it to count only "red" when Number is filtered to "1"
A B C D Number
red green orange 1
orange red green 2
orange red green 3
red green orange 1
orange red green 2
red green orange 3
i believe this can be achieved by selecting the range manually but is there a way to do this without doing it manually?
Hi Dniens,
Our code counts all cells in the selected range, including filtered and hidden cells. To be able to tell you with certainty if we can help you achieve the result you want, we need to see your data. If you can send us (alex@ablebits.com) your sample workbook and the desired result,we will try to help.
This helped me a lot.. thanks..
just one more thing on "How to count by color and sum cells colored using conditional formatting" - is there a way this can only count the filtered values? (i.e.. just count the QTY only for the PAST DUE on the Delivery column)
here's an example.. when i filter "1" it still counts the hidden cells... i just want it to only count "red" in number "1"
A B C D Number
red green orange 1
orange red green 2
orange red green 3
red green orange 1
orange red green 2
red green orange 3
Thanks for the Article -
The spreadsheet I have contains both manual and conditional formatting in the same column,to provide same color - Red background color in this case - now the code that is written addresses either one of the two cases - ie either you can do a manual count or count by conditional formatting; is there a code that combines both cases in one so it can work in my situation.
Also, do you know if there is a way to subtotal that can provide accurate count if the spreadsheet is filtered based on a certain criteria;
Thanks for checking.
-Samir
Hello Samir,
The Conditional Formatting code also counts and sums cells colored manually. As for subtotal, sorry we do have any idea.
Hi Svetlana, I found your article very helpful. I am also looking for a way to subtotal the count of cells by color for sheets that require filtering. Is there any update on this? Thanks in advance!
My chart did not post as set up.
Company/Group #/Eff Date/Term Date/Jan/Feb/March/April (each is a column)
I have a very large spreadsheet with several columns, see example below. Each month I need to count active Companies(color coded by location) for example; in January column, only count Companies that are blue and active, in February column only those that are blue and active, etc. Then repeat for Companies coded purple.
I was able to use your code above to add by color, but now I need to eliminate those that have terminated.
Company Group # Eff Date Term Date January February March April
---------------------------------------------------------------------------
ABC Co. 123 1/1/10 1/1/14 $0 $0 $0 $0
123 Co. 456 4/1/09 $20 $20 $20 $20
D's Bar 789 2/1/07 2/1/14 $15 $0 $0 $0
PJ's Pub 654 1/1/14 $45 $45 $45 $45
Pizza Pub 321 1/1/13 $10 $10 $10 $10
Day Center 852 1/1/12 3/1/14 $25 $25 $0 $0
ABC, 123, D's Bar are Blue - therefore result in January s/b 2, February s/b 1, March s/b 1.
Pj's Pub, Pizza Pub, Day Center are purple - therefore result in Jan s/b 3, Feb s/b 3, March s/b 2.
Is there a way in January to countif blue and term date is after 12/31/13? Then in February countif blue and term date is after to 1/31/14?
I need to read by date rather than $0 as sometimes commission is received even though terminated.
Thank you in advance for any help you can provide, as I am very new at this.
Hello Wendy,
Yes it is possible. Please send us a sample workbook at alex@ablebits.com, and we will work out the solution.
I have a similar situation; is there any way you can publish and example of how to do this?
In my case, the sheet isn't very big, I'm just trying to automate things as much as possible so that data can be updated when I'm not there to adjust things. I need to be able to sum all cells of a certain color that are adjacent to cells containing specific text.
(I have a series of quantities in column A, and quarters - Q1 2016, Q2 2016, etc. - in column B. I need to sum only those quantities that occur next to a specific quarter, and are of a specific color.)
Good Morning,
Is there a way to count by background color only if it is prior to a specific date?
When it brings me back to the module I inserted it highlights the very first GetCellColor in the module.
Thanks again!
Hi Janis,
Please make sure that you pasted the complete code in the module. The compile error usually indicates that some part of the code is missing. Please verify that the code starts with "Sub" and ends with " End sub". You can also download this sample workbook with the CountCellsByColor and SumtCellsByColor functions ready for use and try them on your data.
Hi
I posted the 3 modules you provided in my workbook. I saved it as a .xlsm file type. When I try to enter the formula - GetCellColor or CoutCellsBy Color - it brings me back to my modules coded with the error:
Compile error:
Expected:end of statement
I don't know how to fix this.
Thanks for the help!
This code works great....I could use one additional function. I need to check and see if a cell has data in it before I count it.
Thank you Dennis, please let me know if I can help in any way.
The result I get adds the totals of all the cells in the row that are being conditionally formatted. I have 3 different conditional formats, I understood that the count of sum function would only act on those that met the format of the cell I wanted summed or counted. What am I doing incorrectly or does the formula not act on the specific formatting of the cells in question? I can send the file to you if you'd like to view it. Thank you.
Hi Jerry,
The =CountCellsByColor() and =SumCellsByColor functions count only cells of a specified color. For example, =CountCellsByColor(F2:F14,A17) will color the cells in the range F2:F14 that are of the same color as cell A17. If it does not work in this way for you, please do send us your workbook at support@ablebits.com.
Hi! I'm trying to count by color and i've added the code in the worksheet and saved it as a excel macro-enabled workbook. But when i try to enter the formula i get the messege:"The formula you typed contains an error" I'm using Excel 2010, any idea what i'm doing wrong?
Hi Anders,
Please let me know which formula are you using. Could you copy/paste it here, exactly as you are entering it in your spreadsheet, with all cell references?
The straight count by colour worked perfectly thanks, once I'd read one of the queries and copied to a Word document first. Saves me all the pain I've had of having an extra column with a letter to match the colour and then sorting and counting from that. Cheers!
Hey i love the code that counts the selected cells while using a conditional formatting. I just wanted to know is there a function that does the same thing. i have a file that constantly updates depending on the drop down selection. i want a function that counts the number of highlighted cells when the conditional format highlights them. Some type of count function that works with conditional formatting and updates based off of the drop down that i select. if you understand what i am saying.
Thanks again for the help.
Hey Joe!
Currently we know only one way to do this - using a macro. Other ways are not possible because of Excel's limitations. But we are working on this...
I'm running into an issue where both the =CountCellsByFontColor(F3:F12,F3)and the =CountCellsByFontColor(G3:G12,G3)formulas return ALL of the cells with conditional formatting (standard red/yellow/green)rather than the ones matching the reference cell.
Any idea why this could be happening. Also, I may have missed where someone else pointed this out, but your code above does not copy/paste cleanly into VB, as the line breaks aren't recognized. Takes a bit of manual tweaking. Not sure if this is a limitation of your site or something that can be fixed.
Great solution to a common problem (if I can get it to work anyway), by the way.
Hello Dave,
The CountCellsByFontColor function does not work with conditional formatting, it is purposed only for the cells colored manually. Please use this VBA code instead.
As for the code formatting problem, most likely it is caused by a particular internet browser. Can you please specify which exactly browser you are using so that we can test on our side? And thanks a lot for your feedback!
Hi,
I am sure this is a questions for a different topic but hoping you can help? I have a list of 20 individuals and I want to create a 4 quadrant pie chart and place them in the region their scores qualify them to be in the pie. Can this be done?
Thanks,
Tatiana
Hi Tatiana,
You can do this via a pivot chart or CountIfs function. This sample workbook demonstrates both solutions. Hopefully, this is what you are looking for.
How can i plot the Name within the chart?
Sorry, I do not know a way. You can ask this question on excelforum.com or mrexcel.com forums.
maybe I cannot accomplish what I want -
1. I have a column of numbers (cell A5 - A434) some of those cells w/in that range are colored yellow.
2. on line A435 - I want to sum ONLY the yellow cells.
Is your tutorial "How to count by color and sum by color in an Excel worksheet"
the correct one to utilize?
if so, I am having trouble with your code (when I copy/paste) - it copies red and utilizes 2 lines.
I have copied/pasted other codes and they appear to paste as is.
Thank you for your guidance
Angel
Is it possible to SUM the amounts in a colored cell? Not how many of a particular color but for example - I have 7 yellow cells - each has different amounts in there... I want an end result.
I was able to finally get my other problem resolved so I thank you dearly!
Hi Angel,
Please use the SumCellsByColor function instead. It does exactly what you need - sums the values of colored cells.
Hi Angel,
Yes, this script can help you to achieve the desired result. Try copying the code to Notepad first and then copy/paste from Notepad to Excel.
Alternatively, you can copy it directly form the blog in some other browser.
If this does not work anyway, please send your sample workbook at alexander.frolov@ablebits.com and we will figure this out.
Hi Svetlana,
I got it to work. Thank you. I figured out that you did not need to run the code, just save it and then continue on with the formula.
Thanks
Hello,
I have tried to cut and paste the code from your tutorial
How to count, sum and filter cells by color in Excel 2010 and 2013.
When I do, it shows up red in the module and utilizes 2 lines
it does not appear like yours.
I have cut / pasted other codes and they worked but this one doesn't. Can you tell me if Im missing something on this one?
Hi Svetlana,
I am using this this functions and its great "How to count by color and sum cells colored using conditional formatting", but i need to go an extra step and actually publish the count in a designated cell. How can i do this?
Thanks,
Tatiana
Hi Tatiana,
This is not possible with the current script. But we are going to release the Excel add-in soon that will have this feature. Please stay tuned for the update.
Hi Svetlana,
Thanks for the above code but i guess if we have some unique data in cell along with the color code then there is no need of VBA coding as we can apply simple countif or sumif functions to count/sum the data.
Hi Puran,
You are absolutely right. This code is purposed for the cases when there is no obvious data / color code relation.
hello,
thanks for the help. i am trying to use the count by conditional formatting. it is working when a cell's background is colored, but does not work when formatting is for border color.
also, instead of the count popping up in a box, i would like to have it in another cell.
could you please help me?
thanks,
shachi
Hello Shachi,
All of the functions count cells by the background color only, the border color is not considered. We are not sure that counting by the border color is feasible, this requires additional research.
As for the pop-up, it is displayed in case you color cells using conditional formatting. Otherwise, you can use the CountCellsByColor function that outputs the result directly in a cell.
I am trying to do a bit of a hybrid so I can use an if function. My goal is to make it so if a user manually colors a cell red I can then run an if statement on it, when they remove the red it would no longer be true and can run a different formula. I have added and additional column that I will hide when done, I would like to have a way to use the background color in a single cell in a column give me the color index or some sort of color in column b that I could then run a test against. so if reds color index is 4 and cell A1 is red, then I would like 4 or something simular to show in column b. I am sure this is really simple but over my head. I tried adding the first part of the getcellcolor function but it returns the same color for the cell regardless of what color the background is. I would like to be able to do the same thing with font colors.
I am using excel 2010 and 2013
Thanks
OK, so I just figured out my problem and it was me, I have it working now. Is there any way to run a macro that will automatically do the f2 part? I am trying to hide the column that has my color index in it so users can't mess it up but now they can't hit f2 and calculate it.
Thanks, brilliant script
Hi Brad,
With the current (updated) version of the code, your users can press F2 on any cell, not necessarily the one with the formula.
Moreover, you can do without F2, by using a solution I posted in response to comment 44 above. Hopefully, this will be helpful for you too.
Hi,
Svetlana, you are a genius in excel. I like your vb code.
Thank you.
Thank you very much Sofi!
But all accolades should really go to our Excel guru Alex : ) As I mentioned in the article he wrote the code for this example.
Hello,
Thank you for sharing the instructions and code. I'm experiencing some issues with the implementation. When trying to open and run the macro using function Alt F8, the macro does not appear. When I search for the Macro Enabled Workbook file (.xlsm) that I've saved, I see that there is an exclamation mark on the file icon. When attempting to open the .xlsm file, I receive the following error: "Compile Error: Invalid outside of procedure" Could you please help me to figure out what I'm doing wrong? Thank you!
Hi Sarah,
Please verify whether you copied the entire code from the web-site (from our experience, occasionally the first or last line is missing). If it is not the case, try to add the code anew to some other worksheet. If the error persists, please specify what Excel version you are using.
I would like to write a single IF statement to print a "1" or a "2" in the cell if the colorindex=3. I tried something like =If(range("a1").colorindex=3,1,2)) but something isnt quite correct, I could do the VB code, but i really want something really simple like the IF statement since I am only looking a single cell. I dont want to use "conditional formatting", the color of the cell is set via VB code (selection.colorindex=3)
Thanks
Hi John,
Excel's IF function as well as all other functions work with simple expressions and standard Excel formulas only. You cannot use any VBA code inside the IF statement. Also, as far as I remember none of standard Excel functions can return color index. And this was the reason why custom VBA code is needed for this task.
Now, I am getting #NAME? in the boxes where my formula =CountCellsByColor(N102:N334,A335) was entered. Please Help!
Hi Cassy,
It's hard to say what exactly causes the error without seeing your workbook. If possible, you can send it to us at support@ablebits.com and I'm sure we'll be able to fixed.
PS.. I have saved it as macro-enabled workbook
Hi Khaled,
The only possible reason that I can think of is that you accidentally added the code to a module of some other workbook. Will you check that please?
thanks for the great support.. but i lose the function when i close excel and reopen it again.. any solution for that?
It worked great but when I closed the page and opened it again, it gave me an error and the module was gone. I saved so i am confused on what is happening. Please help!
Hi Cassy,
Please make sure you save the workbook as macro-enabled and add the functions to the correct placement.
very useful thanks much. Even though i dont try all as yet.
This worked great! However, I want to do something a bit different and cannot find a solution. I just want to count any colored cell in a row. My rows are dates. The columns represent projects. The colored cells represent different tasks for these projects and the dates they are to be done. These tasks are color coded. I want to limit the concurrent tasks so I want to count number of color-coded tasks. I don't care how many yellow, how many blue, etc. I just want to know how many colored. For example, if there are three yellow, two blue and three orange, I want to see the number 8. Any ideas?
Thanks,
Hello Tim,
You can achieve the desired result by counting the non-colored cells (white is also a color : ) and then subtracting this number from cells total. So, add the code to your workbook as described in the article and copy the following formula in the last column of each row, starting from row 2:
=COLUMN()-1-CountCellsByColor(A2:Q2,R2)
R2 - the cell with the formula, it should always be non-colored.
A2:Q2 – color-coded columns that you want to count. If your color coded cells start from any column other than A, than replace -1 in the formula with the corresponding column number. E.g. if your color codes start with column B, the formula will be =COLUMN()-2-CountCellsByColor(B2:Q2,R2)
You're the greatest, thanks!
Hello, every time i attempt to use the sum by color function it says sum function not defined.
My intended use is to mark a sales order size in red to indicate that it is complete. I do not want red in the total because this is primarily used for ordering more product and I do not want to over order. Thank you for any help!
Hi RyanRo,
This happens because Excel cannot find some or all of GetCellColor’s functions. Please check the most frequent causes I listed in my reply to comment 42 above.
Hi, I am using the macro for cells that are conditionally formatted. Is there a way to produce the result in a cell versus a message box?
Thank you for this information!
Unfortunately, this cannot be done using a macro because of some limitations of Excel. We are planning to create an add-in that will cope with this. Please stay tuned!
Thanks for the code. It works beautifully. I am wondering if there is a way to have the sum update automatically when you colour a new cell. I know you said above that it is not possible, but there must be some code that could be written that would allow you to be able to do it.
I'm not very familiar with VBAs so I am not sure where to start. But couldn't you write a code of some sort that says:
If "colour change" in "range" then "Run Function"
Just wondering.
Hello Darcy,
We have found the solution on the page below and updated our script: https://sites.google.com/site/e90e50fx/home/sum-by-color-calculate-when-color-changed
However, please not that this script works a bit slower. If it is not critical for you, proceed with the following steps:
1. Download the updated code from the post.
2. Create a new Class module and add the following code to it:
3. In the module with our code, add the following code to the very beginning before the current code.
4. For the changes to take into effect, close the workbook and open it anew.
Thanks for the code, your instructions are very clear and it works brilliant.
However I did experience a problem when copying the code from the website I found it pasted without any line breaks or indents. I was using ie9 but when I changed to chrome everything worked ok. Thought I'd just say in case anyone has similar problems.
Hi Paul,
Thank you very much for letting us know!