Avatar billede Anders Juniormester
16. marts 2017 - 11:53 Der er 34 kommentarer

Sum af antallet af farvede celler

Hej
Jeg har oprettet en ugeplan med plads til 30 medarbejdere. Hver dag i ugen indeholder 8 celler (fredag 5 celler). Disse celler farver jeg i forskellige farver med dertil oprettede typografier, som angiver opgave. Hver celle repræsenterer én arbejdstime. Hvordan laver jeg en sammentælling af farvede celler? Der er ingen data i cellerne, udover den valgte typografi, altså her bare en fyldfarve af cellen.

Jeg vil gerne ha' en sammentælling af planlagte arbejdstimer, samt en sammentælling af ledige timer, altså tomme celler.

Se evt. skemaet her:

https://www.dropbox.com/s/jd0t228548fdc3j/2017%20Ugeplaner%2C%20ny%20kladde.xlsx?dl=0

Jeg vil blive rigtig glad for hjælp til dette!
Avatar billede kabbak Professor
16. marts 2017 - 12:57 #1
Hvis du kun skal tælle celler med farve, uanset farven, så er der en brugerdefineret funktion her

Function AntalFarvet(rRange As Range) As Double
    Dim rCell As Range
    Dim dCount As Integer
    dCount = 0
    Application.Volatile
    For Each rCell In rRange
        If rCell.Interior.ColorIndex <> xlNone Then
            dCount = dCount + 1
        End If
    Next rCell
  AntalFarvet = dCount
End Function
Avatar billede kabbak Professor
16. marts 2017 - 12:59 #2
Hvis den skal adskille farverne fra hinanden og summere på cellerne, så er det denne:


Function ColorCount(rRange As Range, rColor As Range) As Double
    Dim rCell As Range
    Dim dCount As Double
    dCount = 0
    Application.Volatile
    For Each rCell In rRange
        If rCell.Interior.ColorIndex = rColor.Interior.ColorIndex Then
            dCount = dCount + rCell
        End If
    Next rCell
    ColorCount = dCount
End Function
Avatar billede Anders Juniormester
16. marts 2017 - 13:04 #3
Hvor og hvordan skriver jeg denne kode ind? Jeg er ikke SÅ velbevandret i excel :)
Avatar billede kabbak Professor
16. marts 2017 - 14:11 #4
tryk ALT + F11

vælg insert module.

Sæt koden ind

gem

luk på det øverste X

så er du tilbage i arket
Avatar billede Anders Juniormester
16. marts 2017 - 14:14 #5
Tusind tak for hjælpen, jeg prøver at eksperimentere lidt med det!
Avatar billede Anders Juniormester
16. marts 2017 - 14:24 #6
Det er jo nok bare mig der fatter nada....... men jeg har én celle som skal lave en sammentælling af antallet af farvede celler indenfor en nærmere defineret kolonne af celler. Jeg kan ikke rigtig få ovenstående til at virke på det?
Avatar billede kabbak Professor
16. marts 2017 - 14:31 #7
I B48 sætter du

=ColorCount($B$3:$V$39;B46)

ind, den kan du så trække til højre som du vil, overskrifterne i række 46, skal have samme farve som timerne i området, så får du timer for projektet, uanset hvem som arbejder på det.
Avatar billede kabbak Professor
16. marts 2017 - 14:33 #8
I øjeblikket, har "Skagen Fyr" og "Vejgård Boldklub" samme farve, det skal de ikke have
Avatar billede Anders Juniormester
16. marts 2017 - 14:48 #9
Nu nærmer vi os helt klart noget :) "Skagen Fyr" og "Vejgård Boldklub" har samme farve, fordi de begge er anlægsopgaver som Peter er ansvarlig for. Dette står i typografien. Det eneste jeg skal bruge til noget er, at alle celler med farve, uanset hvilken farve de måtte ha', skal tælles sammen til en sum, hvor hver farvet celle tæller for 1.

Timer for det enkelte projekt har vi i et timestyringsprogram. Dette excel-ark skal blot bruges som planlægningshjælp på en interaktiv storskærm. Det skulle gerne gi' et overblik over hvor mange mand vi har brug for med aktuel ordrebeholdning, samt hvilke folk vi kan flytte rundt mellem de forskellige projekter.
Avatar billede Anders Juniormester
16. marts 2017 - 14:49 #10
Altså: sammentællingen skal ske i B42, og den skal tælle alle farvede celler i B3:B39
Avatar billede kabbak Professor
16. marts 2017 - 18:40 #11
så er det #1 du skal bruge
Avatar billede store-morten Ekspert
16. marts 2017 - 20:04 #12
Og formlen:
=AntalFarvet(B3:B39)
Avatar billede Dan Elgaard Ekspert
17. marts 2017 - 07:56 #13
Måske kan denne funktioon hjælpe:
http://www.EXCELGAARD.dk/Bib/FARVETOTAL/

Og, her er, hvordan man ligger makroer ind i Excel:
http://www.EXCELGGARD.dk/Bib/Makroer/Indsaet/
Avatar billede Anders Juniormester
17. marts 2017 - 08:10 #14
Tusind tak for ovenstående inputs - det virker. Men kan nogen svare på hvorfor sammentællingen ikke sker med det samme? Der går et stykke tid, og pludselig har den registreret det. Kan man gøre noget for at det skal ske straks - vi har jo ikke hele dagen til planlægning :)
Avatar billede Anders Juniormester
17. marts 2017 - 10:21 #15
Rettelse til ovenstående: udregningen sker først i det øjeblik jeg starter en ny formel et andet sted i arket?!
Avatar billede kabbak Professor
17. marts 2017 - 10:37 #16
du kan altid beregne ved at trykke F9
Avatar billede Anders Juniormester
17. marts 2017 - 10:42 #17
Dem som skal bruge skemaet skal bruge det via en interaktiv storskærm, og de skulle meget gerne kunne nøjes med blot at afsætte timerne indenfor der forskellige arbejdskategorier.

Hvad kan årsagen være til der ikke beregnes med det samme?
Avatar billede Dan Elgaard Ekspert
17. marts 2017 - 11:10 #18
Årsagen er, at ændring af formatering, som f.eks. farver, ikke er en såkaldt 'flygtig' handling i Excel, og derfor ikke opfattes af Excel, som, at der skal genberegnes.

Derfor skal man enten manuelt genberegne, ved at trykker på [F9] eller også skal man ligge programlinjen:

  Application.Volatile

...ind i den makro funktion, som man opretter.
Avatar billede Anders Juniormester
17. marts 2017 - 11:32 #19
Super - det prøver jeg straks! Mange tak :)
Avatar billede Anders Juniormester
17. marts 2017 - 11:33 #20
Hov, ser jo lige at programlinien Application.Volatile allerede er lagt ind....
Avatar billede Dan Elgaard Ekspert
17. marts 2017 - 12:06 #21
Hvis du kigger på den funktion, som jeg linker til, så er kodelinjen godt nok lagt ind, men som du også ser, så er den kommenteret ud - altså ikke "i drift".

Fjern kommentar apostroffen, og det hele skulle virke.

Kommentar apostroffen er sat ind fordi jeg ikke selv benytter mig af "flygtige" regneark :-)
Avatar billede store-morten Ekspert
17. marts 2017 - 12:20 #22
Er "Automatisk beregning" slået fra?
Avatar billede Anders Juniormester
21. marts 2017 - 10:39 #23
Jeg har stadig problemer med funktionen. Application.Volatile er lagt ind i programmeringen der ser sådan ud:

Function AntalFarvet(rRange As Range) As Double
    Dim rCell As Range
    Dim dCount As Integer
    dCount = 0
    Application.Volatile
    For Each rCell In rRange
        If rCell.Interior.ColorIndex <> xlNone Then
            dCount = dCount + 1
        End If
    Next rCell
  AntalFarvet = dCount
End Function

"Automatisk beregning" er også slået til, og alligevel skal jeg benytte F9 for at beregne hver gang jeg har ændret formatteringen af celler.

Hvad kan jeg gøre for at få det til at ske automatisk, så snart jeg har farvet en celle??
Avatar billede kabbak Professor
21. marts 2017 - 11:37 #24
Prøv at sætte denne i arkets modul, måske virker den

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.Calculate
End Sub
Avatar billede Anders Juniormester
21. marts 2017 - 11:50 #25
Det gør den desværre ikke :(
Avatar billede Dan Elgaard Ekspert
21. marts 2017 - 12:00 #26
Prøv med:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CalculateFull
End Sub
Avatar billede Anders Juniormester
21. marts 2017 - 12:35 #27
Desværre heller ikke. Jeg har sat det ind som separat modul i Visual Basic under Udvikler, er det forkert?
Avatar billede kabbak Professor
21. marts 2017 - 12:53 #28
Det SKAL ind under arkets modul, det hvor du setter farverne ind
Avatar billede Anders Juniormester
21. marts 2017 - 13:02 #29
Okay. Gider du prøve kaste et blik på arket på linket her?

https://www.dropbox.com/s/61fuiogseg1936k/2017%20Ugeplaner%2C%20ny.xlsm?dl=0
Avatar billede kabbak Professor
21. marts 2017 - 13:16 #30
denne skal I arkets modul

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CalculateFull
End Sub


og denne er OK i Module4 og må IKKE være i arkmodulet

Function AntalFarvet(rRange As Range) As Double
    Dim rCell As Range
    Dim dCount As Integer
    dCount = 0
    Application.Volatile
    For Each rCell In rRange
        If rCell.Interior.ColorIndex <> xlNone Then
            dCount = dCount + 1
        End If
    Next rCell
  AntalFarvet = dCount
End Function
Avatar billede Anders Juniormester
21. marts 2017 - 13:25 #31
Jeg er glad for din hjælp, men fatter ikke en meter :) Hvad er forskellen? Jeg er bare ganske almindelig bruger af excel og har ingen erfaring i Visual Basic og alt det andet.....
Avatar billede Anders Juniormester
21. marts 2017 - 14:38 #32
Jeg har fundet ud af det - tusind tak for hjælpen!!
Avatar billede Butterfly Ekspert
12. august 2019 - 17:38 #33
Hej
Hvordan får jeg det til at virke i Excel 365?
Avatar billede Butterfly Ekspert
12. august 2019 - 17:55 #34
Jeg har fundet ud af det :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester