Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Schriftfarbe in Abhängigkeit einer anderen Zelle





Frage

Hallo, habe gerade die Aufgabe bekommen einen kleinen Urlaubsplaner zu basteln. Nun habe ich schon die Schriftfarben in den einzelnen Zellen abhängig vom heutigen Datum mit bedingter Formatierung definiert. (<Heute=grün und >Heute = rot). nun benötige ich in einer anderen Zelle die Schriftfarbe, die in den anderen Zellen mit der bedingten Formatierung dargestellt wird. Also entweder rot oder grün. Das Format in der Zelle ist Standard, kein Datum. Habe mal wieder keinen Schimmer, wie ich das abfragen kann. Danke Jochen

Antwort 1 von coros

Moin Jochen,

irgend wie verstehe ich Deine Frage nicht so ganz. Warum verwendest Du in der Zelle, in der ebenfalls die Schriftfarbe angezeigt werden soll, ebenfalls die bedingte Formatierung mit der gleichen Formel wie in der Zelle, in der die Schriftfarbe schon grün oder rot angezeigt wird? Oder verstehe ich da etwas falsch. Wenn ja, dann schreib mal, was Du wann erreichen möchtest.

MfG,
coros
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 2 von 090365

Guten Moin,

habe heute Nacht noch einmal darüber geschlafen und habe es genau so gelöst..

Aber nun benötige ich eine Möglichkeit,
alle grünen und alle roten Zahlen in der Spalte zu addieren und in je einer Zelle darzustellen.

d.H. Summe aller roten Zahlen in einer Zelle und Summe aller grünen Farben in einer Zelle.

Wie ich die Farbabfrage hinbekomme weiß ich eben nicht.

Gruß Jochen

Antwort 3 von coros

Moin Jochen,

das ist allerdings ein Problem. Die Farben die durch eine bedingte Formatierung hervorgerufen werden, bringen keine Farbindexzahl zurück. Daher kann auch nicht auf die Farbe abgefragt werden. Du hast aber die Möglichkeit über zwei Hilfsspalten, in denen Du in der einen die gleiche Formel wie Du in der bedingten Formatierung für rot und in der anderen die Fromel für die Farbe grün einträgst. Allerdings musst Du dann in die Wennabfrage einarbeiten, dass z.B. eine 1 in die Zelle geschrieben wird, wenn die Bedingung für grün oder rot erfüllt ist. Dann addierst Du über z.B. eine Schleife alle Werte der Zellen, in der eine 1 in der Hilfsspalte steht.

Eine zweite Möglichkeit ist, die bedingte Formatierung über VBA zu realiesieren. Das würde dann folgendermaßen aussehen. Mal angenommen, Deine Datumsangabe steht in dem Bereich A2:A50, Die Zahlen die Summiert werden sollen stehen in dem Bereich B2:B50 und die Summe der grünen Schriftfarbe soll dann in Zelle E2 und die Summe der roten Schriftfarbe soll in Zelle E4 erscheinen, dann müsste der VBA Code so aussehen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
Range("E2,E4").ClearContents
For Wiederholungen = 2 To 50
If Cells(Wiederholungen, 1) >= Date Then
Cells(Wiederholungen, 1).Font.ColorIndex = 4
Range("E2").Value = Range("E2").Value + Cells(Wiederholungen, 2)
Else
Cells(Wiederholungen, 1).Font.ColorIndex = 3
Range("E4").Value = Range("E4").Value + Cells(Wiederholungen, 2)
End If
Next
Application.EnableEvents = True
End Sub


Bei dem Code wird das Datum entsprechend eingefärbt. Ist das Datum in der Vergangenheit, erhält es die Schriftfarbe rot, ist es in der Zukunft, erhält es die Schriftfarbe grün. Außerdem werden alle Zahlen mit grünen Datum und alle Zahlen mit rotem Datum Summiert und in Zalle E2 bzw. E4 angezeigt.

Den Code musst Du in das VBA Projekt der Tabelle kopieren, in dem das Datum steht und die Zahlen summiert werden sollen.

Ich hoffe Du kommst klar. Bei fragem melde Dich. Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal meiner HP in der Rubrik Anleitungen und dort dann Anleitung zum VBA Projekt “Tabelle" nach, da ist das beschrieben.

MfG,
coros
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 4 von willi1970

Versuchs mal mit SUMMEWNN, z.B:

=SUMMEWENN(A1:A4;HEUTE()*1;B1:B3)

Antwort 5 von 090365

Hallo,

danke für die Tipps.

Das von Coros mit den extra Zellen funktioniert so weit ganz gut. Werde eventuell noch das mit VBA testen.

Die Formel von Willi, gibt mir nur die Datumswerte im Zahlenformat an. Ich benötige aber eher eine 1 oder 0 Abfrage.

Vielen Dank für die Hilfe.

Jochen

Antwort 6 von xxxxxxxxxxxxxx

hi

addition einer farbe durch bedingte formatierung hervorgerufen

gruss

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 + Zelle.Value
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 7 von xxxxxxxxxxxxxx

hi

beispiel

=BedingungAdd(A1:A3;3)

gruss