Wie in Excel Anstieg und Abstieg von Zahlen visuell darstellen. Anstieg zur vorherigen Zahl=Feld wird grün eingefärbt, geringerer Wert zur vorherigen Zahl=rot?
Ich habe eine Spalte in Excel in der untereinander Zahlen stehen deren "Wert" mal steigt und mal fällt. Beispiel 45, 21, 22, 12, 89, 101, 65, usw. Nun suche ich eine Möglichkeit, dass das Feld in dem die jeweilige Zahl steht sich entsprechend rot färbt wenn die Zahl in der Zeile darüber/davor höher war (also der Wert der Zahl gesunken ist) und grün färbt wenn die Zahl in der Zeile darüber niedriger war (also der Wert gestiegen ist). Siehe Beispiel Screenshot. Damit möchte ich scheller visuell erfassen können wie sich die Werte über einen Zeitraum positiv oder negativ entwickeln. Leider halfen Googlesuchen nicht weiter. Auch mit eigenen Versuchen mit bedingten Formatierungen oder Formeln kam ich leider nicht zum Ergebnis. Vielen Dank!

2 Antworten
Die Bedingten Formatierungen sind der Schlüssel. Angenommen, die Werte stehen in Spalte B ab Zeile 2, dann
- Markiere die Liste der Werte bis auf den ersten (z. B. B3:B9)
- Start → Formatvorlagen → Bedingte Formatierung → Regeln zur Hervorhebung von Zellen → Größer als... → =$B2 und Format grün wählen
- Start → Formatvorlagen → Bedingte Formatierung → Regeln zur Hervorhebung von Zellen → Kleiner als... → =$B2 und Format rot wählen
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim i As Integer
i = 2
Do While Sh.Range("A" & i).Value <> Empty
Select Case True
Case Sh.Range("A" & i).Value > Sh.Range("A" & i - 1).Value
Sh.Range("B" & i).Interior.Color = RGB(0, 255, 0)
Case Sh.Range("A" & i).Value < Sh.Range("A" & i - 1).Value
Sh.Range("B" & i).Interior.Color = RGB(255, 0, 0)
Case Else
End Select
i = i + 1
Loop
End Sub
Sorry, aber das ist nicht nur "mit Kanonen auf Spatzen schießen", sonder mit dem SheetActivate-Ereignis auch einfach unpraktisch.
Den Code selbst wäre mit "For Each..." imho auch schöner.
Jeden falls finde ich es nicht sinnvoll ein "hauseigene" Funktion, nämlich "Bedingte Formatierung" (siehe @Suboptimierer) durch ein VBA-Script zu ersetzen.
Wo läge da der Vorteil?
Hey Oubyi, bist du da nicht etwas streng mit Brainchild? Vielleicht kannte er die bedingten Formatierungen nicht oder er hat sich zu voreilig vom Fragesteller entmutigen lassen, der es über diesen Weg bereits erfolglos versucht hat.
Für ein "For Each" bräuchte man eine Collection. Ich kenne keine Collection-Objekt in Excel, daß alle Zellen mit Zahlen enthält. Die While-Schleife habe ich gewählt, damit der Code auch funktioniert, wenn der Bereich der Zahlen sich verändert.
Bei der Wahl des Ereignisses habe ich mich für das SheetActivate entschieden. Workbook_Open wollte ich nicht verwenden. Es kommt natürlich auf den Anwendungfall an . Wird die Tabelle oft geändert und dabei das Workbook nicht neu geöffnet ist Workbook_Open unpaktisch.
Danke für eure hilfreichen Kommentare. Ich probiere das auch gleich mal aus.
Das Snippet mußt du in das Objekt: DieseArbeitsmappe kopieren:
Entwicklertools--> Visual Basic
Du mußt zum aktuellen Sheet wechseln damit die Farben aktualisiert werden.
Das ist genau was ich gesucht hatte! Vielen Dank!