Feb 27 2023 07:46 PM
I want to use sumif function to add a column of numbers when criteria is a fill color in the cells. How do I do this.
Feb 27 2023 08:42 PM
Mar 05 2023 11:36 AM
Mar 05 2023 12:26 PM
Press Alt+F11 to activate the Visual Basic Editor.
Select Insert > Module.
Copy the following code into the module:
Function CountByColor(ARange As Range, ColorCell As Range) As Long
Dim ACell As Range
Application.Volatile
For Each ACell In ARange
If ACell.Interior.Color = ColorCell.Interior.Color Then
CountByColor = CountByColor + 1
End If
Next ACell
End Function
Switch back to Excel.
Use the function like this:
In the formula =CountByColor($A$1:$A$19,D1), the first argument $A$1:$A$19 is a range with colored cells, and the second argument D1 is a cell with the color that you want to count.
Save the workbook as a macro-enabled workbook (*.xlsm), and make sure that you allow macros when you open it.
Warning: a formula like this will not automatically update its result when you change the fill color of a cell. It will be updated the next time Excel recalculates formulas; you can force this by pressing F9.
I have attached a sample workbook with the code.
Jul 13 2023 03:47 AM
@HansVogelaar How do use sumifs with cell color as part of the criteria?
Jul 13 2023 04:08 AM
Do you want to impose both a color condition AND other criteria? That could become complicated.
Can you provide an example of what you want to do?
Jul 17 2023 03:36 AM
Jul 17 2023 03:59 AM
Thanks. See the attached demo workbook. The function used is
Function SumIfColour(SumRange As Range, CriteriaRange As Range, Criteria As Variant, _
ColourRange As Range, ColourCell As Range) As Double
Dim i As Long
Dim r As Double
For i = 1 To SumRange.Count
If CriteriaRange(i).Value = Criteria And ColourRange(i).Interior.Color = _
ColourCell.Interior.Color Then
r = r + Val(SumRange(i).Value)
End If
Next i
SumIfColour = r
End Function
Jul 17 2023 04:35 AM
Jul 17 2023 05:00 AM
Once again, please provide an example of what you want to do.
Jul 01 2024 04:38 AM
I was wondering how to do the same thing e.g. sum the numbers in column D which are in rows with blue highlighted cells. Or even better sum all the numbers in blue highlighted cells
I tried your formula but may have chosen the wrong cells.
Jul 01 2024 06:02 AM
For summing numbers in cells with a specific fill color:
Function SumByColor(ARange As Range, ColorCell As Range) As Long
Dim ACell As Range
Application.Volatile
For Each ACell In ARange
If ACell.Interior.Color = ColorCell.Interior.Color Then
SumByColor = SumByColor + Val(ACell.Value)
End If
Next ACell
End Function
To sum the values of cells in F4:F8 with the same fill color as C4, use
=SumByColor(F4:F8, C4)
See the attached workbook.
Jul 02 2024 01:10 AM
It works! Thank you @RLAJack
Aug 10 2024 12:19 PM
Thanks for uploading this! Better than adding it all on your own. However, when I use it, it seems to omit change. For example, I'm creating a budget and have categories of expenses color coded. When I use this formula, it produces a whole number instead of the exact amount of change if added properly. The values that should be included in gas for example are: $16.87, $23.71, $75.23, $50.01 & $17.31 = $183.13
Aug 10 2024 12:46 PM
The earlier questions in this discussion were about summing whole numbers. If you want to sum numbers with decimals, change the return type of the function from Long to Double:
Function SumByColor(ARange As Range, ColorCell As Range) As Double
Dim ACell As Range
Application.Volatile
For Each ACell In ARange
If ACell.Interior.Color = ColorCell.Interior.Color Then
SumByColor = SumByColor + Val(ACell.Value)
End If
Next ACell
End Function
Aug 10 2024 12:50 PM