Avatar billede jetpet88 Nybegynder
17. januar 2012 - 14:23 Der er 12 kommentarer og
2 løsninger

Tæl indhold i farvet celler i excel

Hej.

Jeg har nogle forskellige felter med forskellige farver med tal i. Jeg vil gerne havde en kode der kan få alle de tal lagt sammen der er i eks det røde felt. og det grønne osv. Jeg tror næsten med 100 % sikkerhed at det kan lade sige gøre men kan ikke lige finde en løsning rundt på nettet. Er der en af jer der kan hjælpe mig??
Avatar billede Ialocin Novice
17. januar 2012 - 14:40 #1
Hej jetpet88

- Må det være med en makro (VBA kode) ?
- Hvornår har du tænkt dig at sammetællingen skal ske ?
- Har du et område hvori de farvede celler er ?

Med venlig hilsen, Nicolai
Avatar billede jetpet88 Nybegynder
17. januar 2012 - 14:57 #2
Hej Nicolai.

Marco (VMA kode)? Er det der hvor man selv skal oprettet koden? For så ja. Det har jeg fundet ud af.

Sammentællingen skal ske som det sidste i arket. Altså hvis du har en masse tal fra eks. hele 2011 og du så vil finde ud af at hvad alle de celler der er røde giver til sammen, det samme med blå og grøn hvordan gør man så det. Området kan eks. hedde B4 - B54
Avatar billede Ialocin Novice
17. januar 2012 - 15:06 #3
Hej jetpet88

Vil sammentællingen kunne starte via en knap på selve Excelarket ??

Med venlig hilsen, Nicolai
Avatar billede jetpet88 Nybegynder
17. januar 2012 - 15:16 #4
Hmm.. Hvis der er en knap der kan det??? Men ellers så en kode som eks =Hvis( ...
17. januar 2012 - 15:24 #5
Hvad farver cellerne? - er det betinget formatering.

Hvis JA - brug samme kriterier for sammentællingen.

Er der tale om manuel farvning af celler, er der ingen vej uden om en VBA-løsning.
Avatar billede jetpet88 Nybegynder
17. januar 2012 - 15:27 #6
Det er nogle celler der er manuelt farvet.
Avatar billede Ialocin Novice
17. januar 2012 - 16:51 #7
Hej jetpet88

Jeg vender lige tilbage efter 8 i aften.

Med venlig hilsen, Nicolai
Avatar billede Thorp Praktikant
17. januar 2012 - 18:47 #8
Prøve evt. denne VBA kode med din egen Funktion. Denne kan lægge celler sammen med baggrund eller tekst i Rød, Blå og Grøn:

Function TÆL_FARVER(ByVal Farve As String, ByRef Område As Range) As Double

Const RødBaggrund = 255
Const GrønBaggrund = 5287936
Const BlåBaggrund = 12611584
Const RødTekst = 255
Const GrønTekst = 5287936
Const BlåTekst = 12611584

Dim SUM_C As Double

Dim MySelection As Integer

On Error GoTo ErrorHandler

    Select Case Farve
   
        Case "RødBaggrund"
       
            InteriorColor = RødBaggrund
            MySelection = 1
                       
        Case "GrønBaggrund"
       
            InteriorColor = GrønBaggrund
            MySelection = 1
                       
        Case "BlåBaggrund"
       
            InteriorColor = BlåBaggrund
            MySelection = 1
           
        Case "RødTekst"
       
            InteriorColor = RødTekst
            MySelection = 2
                       
        Case "GrønTekst"
       
            InteriorColor = GrønTekst
            MySelection = 2
                       
        Case "BlåTekst"
       
            InteriorColor = BlåTekst
            MySelection = 2
                       
    End Select
   
    SUM_C = 0
   
    If MySelection = 1 Then
   
        For Each c In Område
   
            If c.Interior.Color = InteriorColor Then SUM_C = SUM_C + c.Value
   
        Next c

   
    ElseIf MySelection = 2 Then
   
        For Each c In Område
   
            If c.Font.Color = InteriorColor Then SUM_C = SUM_C + c.Value
   
        Next c

    End If
   
   
   
    TÆL_FARVER = SUM_C

Exit Function

ErrorHandler:

    MsgBox ("Du kan søge på Celler med {'RødBaggrund', 'RødTekst', 'GrønBaggrund', 'GrønTekst', 'BlåBagrund', 'BlåTekst'}")


End Function
Avatar billede kabbak Professor
17. januar 2012 - 19:01 #9
en gammel en fra bak's tid
Lav en celle med den baggrundsfarve, som skal summeres (rColor)
området (rRange)

Public Function ColorSum(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
    ColorSum = dCount
End Function
Avatar billede Ialocin Novice
17. januar 2012 - 22:04 #10
Hej jetpet88

Følgende kode fungerer hos undertegnede i Excel 2003.
Jeg har oprettet en knap (cmdTælFarvedeCeller) på arket "Sheet1".

Koden løber gennem cellerne B4 til B54 og kigger efter 5 farver.
Værdierne i de farvede celler tælles op i hver sin celle, fra D1 til D5 ... og resultatet skrives med den aktuelle font farve.

Antallet af farver kan tilpasses ved af udvide/begrænse select Case strukturen.

Området der løbes igennem kan let tilrettes ved at ændre start og stop for lRow og lCol.

Det kan godt være, at du selv skal tilrette ColerIndex farvekoderne, så de passer til din baggrundsfarver ?

Her er et link til ColerIndex farvekoderne:
http://vbadud.blogspot.com/2007/06/colorindex-coloring-excel-sheet-cells.html


Prøv det og lad høre ...


Private Sub cmdTælFarvedeCeller_Click()
Dim lRow As Long
Dim lCol As Long
Dim farve As Integer
   
   
'sæt font farve i de opsummerede celler
Sheet1.Range("D1").Font.ColorIndex = 3  'rød
Sheet1.Range("D2").Font.ColorIndex = 4  'grøn
Sheet1.Range("D3").Font.ColorIndex = 5  'blå
Sheet1.Range("D4").Font.ColorIndex = 6  'gul
Sheet1.Range("D5").Font.ColorIndex = 7  'pink
   
   
'deaktiver skærmopdatering
Application.ScreenUpdating = False


    'fra række 4 til 54
    For lRow = 4 To 54
   
        'fra kolonne B til B
        For lCol = 2 To 2
       
            'tildel farve det aktuelle colorindex
            farve = Sheet1.Cells(lRow, lCol).Interior.ColorIndex
           
                'vælg farven der skal opsummeres
                Select Case farve

                    'rød = 3
                    Case 3

                        'opsummer celle D1
                        Sheet1.Range("D1").Value = Sheet1.Range("D1").Value + Cells(lRow, lCol).Value
                                             
                    'grøn = 4
                    Case 4
                       
                        'opsummer celle D2
                        Sheet1.Range("D2").Value = Sheet1.Range("D2").Value + Cells(lRow, lCol).Value
                                               
                    'blå = 5
                    Case 5
                       
                        'opsummer celle D3
                        Sheet1.Range("D3").Value = Sheet1.Range("D3").Value + Cells(lRow, lCol).Value
                                               
                    'gul = 6
                    Case 6

                        'opsummer celle D4
                        Sheet1.Range("D4").Value = Sheet1.Range("D4").Value + Cells(lRow, lCol).Value
                       
                    'pink = 7
                    Case 7
                       
                        'opsummer celle D5
                        Sheet1.Range("D5").Value = Sheet1.Range("D5").Value + Cells(lRow, lCol).Value
                       
                       
                End Select

        'næste kolonne
        Next lCol
   
    'næste række
    Next lRow
   
 

'aktiver skærmopdatering
Application.ScreenUpdating = True

End Sub


Med venlig hilsen, Nicolai
Avatar billede store-morten Ekspert
17. januar 2012 - 23:13 #11
Avatar billede jetpet88 Nybegynder
18. januar 2012 - 09:11 #12
Hej Alle.

Jeg takker for hjælpen og Kabbak og store-morten har kommet med de enkelste svar (for mig). Men takker jer alle.

Kabbak eller store-morten er der en af jer der vil sætte et svar på så jeg kan give jer point? Takker :)
Avatar billede store-morten Ekspert
18. januar 2012 - 19:58 #13
Velbekomme.
Husk, vent på 'Svar' fra kabbak og del.
Avatar billede kabbak Professor
19. januar 2012 - 16:47 #14
ok ;-))
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
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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