Funktioner der vedrører felternes baggrundfarve

I visse sammenhænge kan man anvende baggrundsfarver i celler, til at markere celler, af bestemte typer. I nogle situationer, har man så behov for at kunne udføre beregninger, på celler, der har bestemte farver, fx at tælle hvor mange røde celler der er, eller lægge alle tal sammen, der står i blå celler osv.

De to nedenstående funktioner gør netop dette. Den første tæller alle de celler i et område, der har samme farve som en angivet celle.

Function CountColor(Cel, ran As range) As Double
    colo = Cel.Interior.ColorIndex
    cou = 0
    For Each c In ran.Cells
        If c.Interior.ColorIndex = colo Then
            cou = cou + 1
        End If
    Next c
    CountColor = cou
End Function

Funktionen bruges en i celle som fx =countcolor(A1;B1:B70). Den tæller så alle de celler i det anførte område, der har samme baggrundsfarve som A1. Den celle, hvis farve skal tælles må gerne ligge inde i det område, der skal tælles og tælles i givet fald med.

Den næste funktion adderer de tal, der står i celler med en angivet baggrundsfarve i et angivet område.

Function SumColor(Cel, ran As range) As Double
    colo = Cel.Interior.ColorIndex
    colsum = 0
    For Each c In ran.Cells
        If c.Interior.ColorIndex = colo Then
            colsum = colsum + c.Value
        End If
    Next c
SumColor = colsum
End Function

Denne funktion anvendes på samme måde som ovenfor: =sumcolor(A1;B1:70). Den sammenlægger værdierne af alle de celler i området B1:B70, der har samme farve som A1. Også i denne funktion, må den celle, der angiver farven gerne ligge inde i det område, der skal beregnes.

Funktioner, der vedrører skriftens formatering

Næste funktion lægger også sammen, på samme måde som SumColor, men her er det cellesn tekstfarve, der er afgørende:

Function SumFontCol(cel, ran As Range) As Double
    Application.Volatile
    colo = cel.Font.Color
    colsum = 0
    For Each c In ran.Cells
        If c.Font.Color = colo Then
            colsum = colsum + c.Value
        End If
    Next c
    SumFontCol = colsum
End Function

I denne funktion har jeg tilføjet linjen Application.Volatile (som også kan tilføjes i de øvrige). Denne funktion betyder at formler med funktionen, automatisk genberegnes, når andre celler i arket genberegnes. Uden denne linje skal man selv genberegne den celle, hvor formlen står.  Uanset Application.Volatile sker der ingen genberegning, hvis der ikke ændres andet end format i regnearket, idet formatændringer i sig selv ikke udløser en genberegning. Her jeg derfor en formel, der fx lægger alle gule tal i området A1:A10 sammen, sker der ingen genberegning hvis jeg ændret et tal til at være gult, eller giver et gult tal en anden farve. I så fald kan man "tvinge" en genberegning gennem ved at trykke F9.

Funktionerne kan forholdsvis let tilpasses, så det er andre formategenskaber, der afgør om en celle skal med i beregningerne eller ej. Den sidste funktion her, tæller fx de celler i et område, der er formateret med Fed skrift:

Function TaelFed(ran As Range) As Double
    cou = 0
    For Each c In ran.Cells
        If c.Font.Bold = True Then
            cou = cou + 1
        End If
    Next c
    TaelFed = cou
End Function

Denne funktion bruges som følger =taelfed(A1:a100). Her skal der altså ikke på forhånd angives en celle, der er formateret med fed.

- Til top -
- Tilbage til makroer -
- Tilbage til Excel -