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-kurser i Excel & Office-paketet
Makrot som räknar celler med en specifik fyllningsfärg heter CountCellsByColor och har 2 argument;
- Ett område.
- 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



Kundanpassade kurser
