Diskussionsgruppe: Tabellenkalkulation
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: http://www.gehabe.de/excel.zip
Vielen Dank für die Hilfe !!!
Von: gehabe Datum: 14.05.2007, 15:42
Antwort 1
von Hajo_Zi vom 14.05.2007, 15:56
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
Antwort 2
von nighty vom 14.05.2007, 16:13
hi all :-)
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 Function
Antwort 3
von gehabe vom 14.05.2007, 16:28
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 !!!
Antwort 4
von nighty vom 14.05.2007, 16:35
hi al :-)
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 vom 14.05.2007, 16:41
Geht irgendwie nicht.
Kannst du es dir mal runterladen und mal schauen. Habe es aktualisiert !!!
Danke
Antwort 6
von nighty vom 14.05.2007, 16:51
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
Antwort 7
von nighty vom 14.05.2007, 16:53
hi all :-)
ich teste aber gerne :-)
schick mir eine mustertabelle
an oberley@t-online.de mit eindeutigen betreff
gruss nighty
Antwort 8
von nighty vom 14.05.2007, 16:56
hi all :-)
hab die datei runtergeladen und funktioniert formel gibt eine 1 zurück da ein rotes feld da ist
gruss nighty
Antwort 9
von nighty vom 14.05.2007, 17:01
hi all :-)
mit excel 2000 getestet,kleinere versionen weiss ich nicht ob geht und excel 2007 ist ausgeschlossen denk ich
gruss nighty
|
|