Forum Discussion

Hugh_Wilbarger's avatar
Hugh_Wilbarger
Copper Contributor
Oct 17, 2023

Create a conditional sum of cell contents based on cell color

How to create a numerical sum of cells if cell color fill = 'No Fill" or if cell color fill is a certain color such as yellow?

  • Hugh_Wilbarger 

    In Excel, you can create a conditional sum of cell contents based on cell colors using a combination of Visual Basic for Applications (VBA) and a User-Defined Function (UDF). Here's how you can do it:

    Step 1: Enable Developer Tab If you haven't already enabled the Developer tab in Excel, do the following:

    1. Go to the "File" tab.
    2. Click on "Options."
    3. In the Excel Options dialog, select "Customize Ribbon."
    4. Check the "Developer" option in the right pane.
    5. Click "OK."

    Step 2: Create a User-Defined Function (UDF) in VBA

    1. Press ALT + F11 to open the VBA editor.
    2. Click "Insert" in the menu and select "Module" to insert a new module.
    3. Copy and paste the following VBA code into the module window:

    vba code:

    Function SumByColor(rng As Range, cellColor As Range) As Double
        Dim cell As Range
        Dim total As Double
        Application.Volatile
    
        For Each cell In rng
            If cell.Interior.Color = cellColor.Interior.Color Then
                total = total + cell.Value
            End If
        Next cell
    
        SumByColor = total
    End Function
    1. Close the VBA editor.

    Step 3: Use the UDF in Excel

    Now, you can use the UDF in your Excel worksheet to sum cells based on their color. Assuming you have a range of numbers in cells A1:A10 and you want to sum the cells with a yellow background:

    1. In a different cell, type the following formula:

    =SumByColor(A1:A10, B1)

      • A1:A10 is the range you want to sum.
      • B1 refers to the cell containing the color you want to match (B1 should have the same color as the cells you want to sum).
    1. Press Enter. The formula will sum the values in cells with the same background color as the color in cell B1.

    This formula will sum the values in the specified range based on the cell color, which can be either "No Fill" or any specific color you choose. You can customize it to match other colors by changing the cellColor reference to another cell with the desired color or by specifying the color as an RGB value. The text was created with the help of AI.

     

    My answers are voluntary and without guarantee!

     

    Hope this will help you.

     

    Was the answer useful? Mark as best response and like it!

    This will help all forum participants.

  • NikolinoDE's avatar
    NikolinoDE
    Gold Contributor

    Hugh_Wilbarger 

    In Excel, you can create a conditional sum of cell contents based on cell colors using a combination of Visual Basic for Applications (VBA) and a User-Defined Function (UDF). Here's how you can do it:

    Step 1: Enable Developer Tab If you haven't already enabled the Developer tab in Excel, do the following:

    1. Go to the "File" tab.
    2. Click on "Options."
    3. In the Excel Options dialog, select "Customize Ribbon."
    4. Check the "Developer" option in the right pane.
    5. Click "OK."

    Step 2: Create a User-Defined Function (UDF) in VBA

    1. Press ALT + F11 to open the VBA editor.
    2. Click "Insert" in the menu and select "Module" to insert a new module.
    3. Copy and paste the following VBA code into the module window:

    vba code:

    Function SumByColor(rng As Range, cellColor As Range) As Double
        Dim cell As Range
        Dim total As Double
        Application.Volatile
    
        For Each cell In rng
            If cell.Interior.Color = cellColor.Interior.Color Then
                total = total + cell.Value
            End If
        Next cell
    
        SumByColor = total
    End Function
    1. Close the VBA editor.

    Step 3: Use the UDF in Excel

    Now, you can use the UDF in your Excel worksheet to sum cells based on their color. Assuming you have a range of numbers in cells A1:A10 and you want to sum the cells with a yellow background:

    1. In a different cell, type the following formula:

    =SumByColor(A1:A10, B1)

      • A1:A10 is the range you want to sum.
      • B1 refers to the cell containing the color you want to match (B1 should have the same color as the cells you want to sum).
    1. Press Enter. The formula will sum the values in cells with the same background color as the color in cell B1.

    This formula will sum the values in the specified range based on the cell color, which can be either "No Fill" or any specific color you choose. You can customize it to match other colors by changing the cellColor reference to another cell with the desired color or by specifying the color as an RGB value. The text was created with the help of AI.

     

    My answers are voluntary and without guarantee!

     

    Hope this will help you.

     

    Was the answer useful? Mark as best response and like it!

    This will help all forum participants.

      • NikolinoDE's avatar
        NikolinoDE
        Gold Contributor

        laurieirish 

        Create a User-Defined Function (UDF) in VBA

        1. Press ALT + F11 to open the VBA editor.
        2. Click "Insert" in the menu and select "Module" to insert a new module.
        3. Copy and paste the following VBA code into the module window:

        Vba Code is untested backup your file.

        Function SumByColor(rng As Range, cellColor As Range) As Double
            Dim cell As Range
            Dim total As Double
            Dim color As Long
        
            Application.Volatile
        
            ' Get the color of the reference cell
            color = cellColor.DisplayFormat.Interior.Color
        
            For Each cell In rng
                ' Check if the cell's display format color matches the reference color
                If cell.DisplayFormat.Interior.Color = color Then
                    total = total + cell.Value
                End If
            Next cell
        
            SumByColor = total
        End Function

        Step 3: Use the UDF in Excel

        Now, you can use the UDF in your Excel worksheet to sum cells based on their display color (including conditional formatting):

        1. Assuming you have a range of numbers in cells A1:A10 and you want to sum the cells with a yellow background:
        2. In a different cell, type the following formula:

        =SumByColor(A1:A10, B1)

    • info1450's avatar
      info1450
      Copper Contributor

      NikolinoDE 

       

      I used your sum by color formula and it worked great. However, after I shared the file using Microsoft 365, the formula stopped functioning and instead shows: #NAME?

      I figure it has to do with including the module with the vba code?  How do I include it with the shared file?

      • NikolinoDE's avatar
        NikolinoDE
        Gold Contributor

        info1450 

        As macros don't work in Excel Online, if you're sharing the file via OneDrive or SharePoint, ask them to open it with the desktop version by clicking the "Open in Desktop App" button from the online viewer.

Resources