Räkna celler med fyllningsfärg

Går det att räkna antal celler i ett område med exempelvis gul fyllningsfärg? I Excel finns det ingen inbyggd funktion eller verktyg för detta tyvärr. När lösningen inte finns inbyggd i Excel så får man lösa problemet med ett makro. I Länken nedan finns Excelfilen med makrot inbyggt men det går även kopiera och klistra in koden nedan.

Detta makro fungerar endast om fyllningsfärgen i celler är satt manuellt och inte med Villkorsstyrd formatering.

Här kan du ladda hem Excelfilen.

Vi rekommenderar dessa Excelkurser:
www.infocell.se – lärarledda kvalitetskurser i Excel
www.officekurs.se – oslagbar e-Learning i Excel & Office-paketet

Räkna celler med fyllningsfärg

Makrot som räknar celler med en specifik fyllningsfärg heter CountCellsByColor och har 2 argument;

  1. Ett område.
  2. En cellreferens, vilken innehåller fyllningsfärgen som räknas antalet av i området.

I exemplet ovan (bilden) så innehåller cell F11 följande: =CountCellsByColor($B$1:$B$14;E11)

Med egna makrofunktioner får man ingen hjälp som med vanliga inbyggda funktioner så man måste veta hur argumenten ska anges och vilken ordning. Första argumentet är området med färgade celler i B-kolumnen. Andra argumentet är cellen E11 som innehåller färgen (guldfärg) som ska räknas på. Resultatet av makrofunktionen blir antal av den specifika färgen i området, i detta fall 5.

I exemplet är sedan funktionen kopierad neråt och räknar antal gula och blåa celler också.

För att skapa makrot i din egen arbetsbok kan du kopiera koden nedan, öppna sedan VBA-editorn (Alt+F11) i Excel. Klicka på Infoga och välj Modul. Klistra in koden. Stäng VBA-editorn och använd sedan den nya. funktionen CountCellsByColor. Spara sedan din arbetsbok som en Makroaktiverad Excel-arbetsbok (*.xlsm).

Kopiera koden nedan:

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 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

Du gillar kanske också...