Supportnet / Forum / Tabellenkalkulation
Bedingte Formatierungen zählen
Frage
Guten Tag.
Ich verzweifele gerade ein wenig, was aber eher daran liegt, dass ich mich bisher noch nicht so intensiv mit Excel beschäftigen musste und nun gleich auch einen Schlag etwas mehr will.
Ich erstelle gerade eine Excel Tabelle in der ich verschiedene Daten mit einander vergleichen lasse und wenn ein bestimmtes Datum erreicht ist, sich die Farbe ändert.
Soweit hat auch alles gut geklappt und die Formatierungen stehen, nur würde ich nun gerne eine kleine Statistik haben, wie viele rot gefärbte Felder es gibt und wie viele gelbe Felder es in der Spalte gibt.
Habe nun schon viel gelesen aber leider nirgendwo das richtige gefunden, daher hoffe ich auf ein wenig Hilfe hier.
Ihr könnt Euch die Datei auch gerne mal anschauen:
[url]http://www.gehabe.de/excel.zip[/url]
Vielen Dank für die Hilfe !!!
Antwort 1 von Hajo_Zi
Hallo Unbekannter,
die bedingte Formatierung auslesen ist das komplizierste was mir bekannt ist. Schaue mal auf diese Seite
Link zur Seite
Der Nachbau der Bedingung ist einfacher.
Gruß Hajo
die bedingte Formatierung auslesen ist das komplizierste was mir bekannt ist. Schaue mal auf diese Seite
Link zur Seite
Der Nachbau der Bedingung ist einfacher.
Gruß Hajo
Antwort 2 von nighty
hi all :-)
wie gewünscht
gruss nighty
schreibweise der formel ist
3 ist dein gesuchter farbindex zur zeit rot
einzufuegen unter
alt+f11 öffnet den vbeditor
einfuegen modul
dort einfuegen
nun ist die neue funktion verfuegbar einfuegen/funktion
wie gewünscht
gruss nighty
schreibweise der formel ist
=BedingungAdd(A1:A3;3)3 ist dein gesuchter farbindex zur zeit rot
einzufuegen unter
alt+f11 öffnet den vbeditor
einfuegen modul
dort einfuegen
nun ist die neue funktion verfuegbar einfuegen/funktion
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 FunctionAntwort 3 von gehabe
Vielen Dank für die schnelle Hilfe.
Allerdings, wenn ich es einfüge, dann steht dort immer #Name?
Was hab ich falsch gemacht?
Nochmal vielen Dank !!!
Allerdings, wenn ich es einfüge, dann steht dort immer #Name?
Was hab ich falsch gemacht?
Nochmal vielen Dank !!!
Antwort 4 von nighty
hi al :-)
1)
alt+f11 öffnet den vbeditor
einfuegen/modul
dort einfuegen
2)
einfuegen/funktion/benutzerdefiniert/BedingungAdd
z.b.
gruss nighty
1)
alt+f11 öffnet den vbeditor
einfuegen/modul
dort einfuegen
2)
einfuegen/funktion/benutzerdefiniert/BedingungAdd
=BedingungAdd(Bereich;Farbindex)z.b.
=BedingungAdd(A1:A3;3)gruss nighty
Antwort 5 von gehabe
Geht irgendwie nicht.
Kannst du es dir mal runterladen und mal schauen. Habe es aktualisiert !!!
Danke
Kannst du es dir mal runterladen und mal schauen. Habe es aktualisiert !!!
Danke
Antwort 6 von nighty
hi all :-)
wenn es nicht geht ist die bedingung nicht im macrocode integriert,wie hajo es schon sagte ist es recht umfangreich,und dieses makro greift nur bei bestimmten bedingungen,bis jetzt ging es fast immer,dann können nur richtige profis helfen um deine bedingung im code zu erweitern
gruss nighty
wenn es nicht geht ist die bedingung nicht im macrocode integriert,wie hajo es schon sagte ist es recht umfangreich,und dieses makro greift nur bei bestimmten bedingungen,bis jetzt ging es fast immer,dann können nur richtige profis helfen um deine bedingung im code zu erweitern
gruss nighty
Antwort 7 von nighty
hi all :-)
ich teste aber gerne :-)
schick mir eine mustertabelle
an oberley@t-online.de mit eindeutigen betreff
gruss nighty
ich teste aber gerne :-)
schick mir eine mustertabelle
an oberley@t-online.de mit eindeutigen betreff
gruss nighty
Antwort 8 von nighty
hi all :-)
hab die datei runtergeladen und funktioniert formel gibt eine 1 zurück da ein rotes feld da ist
gruss nighty
hab die datei runtergeladen und funktioniert formel gibt eine 1 zurück da ein rotes feld da ist
gruss nighty
Antwort 9 von nighty
hi all :-)
mit excel 2000 getestet,kleinere versionen weiss ich nicht ob geht und excel 2007 ist ausgeschlossen denk ich
gruss nighty
mit excel 2000 getestet,kleinere versionen weiss ich nicht ob geht und excel 2007 ist ausgeschlossen denk ich
gruss nighty
Antwort 10 von nighty
hi all :-)
laut user gehabe geht es jetzt :-))
gruss nighty
laut user gehabe geht es jetzt :-))
gruss nighty

