Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Kann man mit Excel Farbig markierte Zellen Zählen?





Frage

Ich habe verschieden farbige Zellen und möchte das excel mir sagt z.B wieviele Rot farbig formatiere Zellen ich habe egal was in der zelle steht. Es geht nur um dir fabr der Zelle.

Antwort 1 von CeZaA

Wenn du die Zellen mit "Bedingter Formatierung..." färbst sollte dies gehen. Inndem du die einzlenen Werten zusammen addierts.

Gruss Özkan B.

Antwort 2 von coros

Hi Webmaster-01,

gestatte mir zum Anfang eine kleine Anmerkung. Ein Hallo am Anfang und ein Gruß am Ende würde Deinen Beitrag gleich viel netter aussehen lassen. Wenn Du zum Bäcker gehst sagst Du ja auch beim Reingehen "Guten Tag" und beim Gehen "Auf Wiedersehen". Denn die Leute, an die Du Deine Frage richtest, sitzen zwar am PC, sind aber dennoch Menschen.

Nun zu Deiner Frage: Schau mal auf meiner HP in der Rubrik Beispieldateien und dort dann in dem Beispiel 20 nach. Dort stelle ich dazuBeispieldatei zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 3 von nighty

hi all :)

hier noch zwei varianten

gruss nighty

hier die erste function die normale hintergrundfarbe abtastet

Rem =SumInteriorColor(A1:A3;3)
Function SumInteriorColor(Zellen As Range, farbe As Long) As Double
Dim Zelle As Range
SumInteriorColor = 0
For Each Zelle In Zellen
If Zelle.Interior.ColorIndex = farbe Then
SumInteriorColor = SumInteriorColor + 1
End If
Next
End Function

hier das zweite beispiel einer function die die farbe der bedingten formatierung abtastet

Rem =BedingungAdd(A1:A3;3)
Rem wobei die drei fuer die farbe rot steht

Function BedingungAdd(Zellen As Range, farbe As Integer) As Double
Dim Zelle As Range
Dim farben As Integer
Application.Volatile
For Each Zelle In Zellen
farben = GetCellColor(Zelle)
If farben = farbe Then
BedingungAdd = BedingungAdd + 1
End If
Next
End Function

Function GetCellColor(cell As Range) As Integer
Dim i
Dim myVal
Dim myColor As Integer
Dim done As Boolean
On Error Resume Next
Names("testname").Delete
On Error GoTo 0
Application.ReferenceStyle = xlR1C1
myVal = cell.Value
myColor = cell.Interior.ColorIndex
done = False
For i = 1 To cell.FormatConditions.Count
With cell.FormatConditions.Item(i)
If .Type = 1 Then
Select Case .Operator
Case xlBetween
If (myVal >= Evaluate(.Formula1) And myVal <= Evaluate(.Formula2)) _
Or (myVal <= Evaluate(.Formula1) And myVal >= Evaluate(.Formula2)) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlEqual
If myVal = Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlGreater
If myVal > Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlGreaterEqual
If myVal >= Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlLess
If myVal < Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlLessEqual
If myVal <= Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlNotBetween
If myVal < Evaluate(.Formula1) Or myVal > Evaluate(.Formula2) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlNotEqual
If myVal <> Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
End Select
ElseIf .Type = 2 Then
Names.Add Name:="testname", RefersToR1C1Local:=.Formula1
If Evaluate("testname") Then
myColor = .Interior.ColorIndex
done = True
End If
Names("testname").Delete
Else
MsgBox "Unbekannter Typ: " & .Type, , "PANIC: In Function GetCellColor"
Exit Function
End If
End With
If done Then Exit For
Next
Application.ReferenceStyle = xlA1
GetCellColor = myColor
End Function

Antwort 4 von Event

Hallo

Eine kleine Funktionserweiterung unter vba könnte helfen..
Nachfolgenden Code in den Codebereich eines Moduls kopieren:
Option Explicit
Function zfarbe(bereich As Range, farbe As Variant)
Dim zaehler As Long, zelle
For Each zelle In bereich
Debug.Print zelle.Address, zelle.Interior.ColorIndex
If zelle.Interior.ColorIndex = farbe Then zaehler = zaehler + 1
Next
zfarbe = zaehler
End Function


In einer Zelle(z.B. C20 ) =zfarbe(A1:C100;46) eingetragen, gibt die Funktion die Anzahl der Zellen im Bereich A1:C100 mit dem colorindex 46, gleichartig formatierten Zellen zurück.

Gruß