Funktion der udregner average på baggrund af cellefarver
Hej,
Jeg har et regneark, hvor jeg har defineret nogle værdier med en række celle baggrundsfarver.
Findes der en funktion der kan udregne average af disse værdier, men som kun udregner resultatet af f.eks. de grønne og røde celler, mens den ser bort fra de blå felter?
En sådan funktion findes ikke i Excel, men læg denne kode i et modul og brug den som en almindelig funktion:
Function AveColor(Cel, ran As Range) As Double Application.Volatile 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
colsum = 0 For Each c In ran.Cells If c.Interior.ColorIndex = colo Then colsum = colsum + c.Value End If Next c AveColor = colsum / cou End Function
Når du skal bruge denm, skirve du =AveColor(A1;A1:A10), hvor A1 er en celle, der har den farve, som du vil finde gennemsnittet af, og A1:A10 er det område, du vil beregne på, hvis farven er rigtig.
Husk at denne type funktioner, genberegnes kun, når der i øvrigt genberegnes i regnearket. Skifter du farve på en celle, ændres resultatet ikke, før der foretages en genberegning.
Function AveColor(Cel, ran As Range) As Double Application.Volatile colo = Cel.Interior.ColorIndex cou = 0 colsum = 0 For Each c In ran.Cells If c.Interior.ColorIndex = colo Then cou = cou + 1 colsum = colsum + c.Value End If Next c AveColor = colsum / cou End Function
Function AveColor(Cel, cel2, ran As Range) As Double Application.Volatile colo = Cel.Interior.ColorIndex colo2 = cel2.Interior.ColorIndex cou = 0 colsum = 0 For Each c In ran.Cells If c.Interior.ColorIndex = colo Or c.Interior.ColorIndex = colo2 Then cou = cou + 1 colsum = colsum + c.Value End If Next c AveColor = colsum / cou End Function
Begge farver SKAKL anvendes, fx
AVECOLR(A1;A2;A!:A10), hvor A1 og A2 indeholder farverne.
Function AveColor(Cel, ran As Range, Optional Cel2 As Variant) As Double Application.Volatile If Not IsMissing(Cel2) Then colo2 = Cel2.Interior.ColorIndex End If colo = Cel.Interior.ColorIndex
cou = 0 colsum = 0 For Each c In ran.Cells If c.Interior.ColorIndex = colo Or c.Interior.ColorIndex = colo2 Then cou = cou + 1 colsum = colsum + c.Value End If Next c AveColor = colsum / cou End Function
Nu skal funktionen bruges sådan =AVECOLOR(A1;A1:A10;A2). Det sidste argument skal indeholde farve 2, men kan udelades, hvis der kun skal regnes på en enkelt celle.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.