If you have ever tried to count cells by colour in Excel, you may have noticed that Excel does not contain a function to accomplish this.
We can find out how many cells by filtering the list by colour, and maybe use the AGGREGATE function to return the count. This is an option. But having to filter the list each time may not be good enough.
Because functions such as COUNTIF cannot count by cell colour, we will need to create our own custom function (also known as User Defined Functions or UDF’s) to get the job done.
Custom Function to Count Cells by Colour
- Open the Visual Basic Editor by pressing Alt +F11 or by clicking the Visual Basic button on the Developer tab.
- Insert a new module if necessary by clicking the Insert menu and then Module.
- Copy and paste the code below into the code window (you can put this into the current workbook or the Personal Macro Workbook for global use).
Function COUNTIFCOLOUR(Colour As Range, rng As Range) As Long Dim NoCells As Long Dim CellColour As Long Dim rngCell As Range CellColour = Colour.Interior.Color For Each rngCell In rng If rngCell.Interior.Color = CellColour Then NoCells = NoCells + 1 End If Next COUNTIFCOLOUR = NoCells End Function
You can then use this function like any other function in Excel. The arguments do not appear like normal functions, but everything else is the same.
How does it work?
Colour and rng are set up as arguments for the function. So when a user selects a cell containing the colour they want to count, this is assigned to the CellColour variable.
The user will select the range of cells to use and this is assigned to rng.
A For Next loop is then used to loop through each cell of that range checking if it is the colour we are looking for. If so 1 is added to the NoCells variable. This is assigned to the function for returning when the loop finishes.
Want to Learn More?
Want to learn more Excel VBA? Check out the complete Excel VBA online course. You will see more examples of User Defined Functions and a whole lot more.