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?

Beispiel - (Microsoft Excel, Formel, bedingte-formatierung)

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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

Brainchild  31.08.2017, 12:51

Das Snippet mußt du in das Objekt: DieseArbeitsmappe kopieren:

Entwicklertools--> Visual Basic

0
Brainchild  31.08.2017, 12:55
@Brainchild

Du mußt zum aktuellen Sheet wechseln damit die Farben aktualisiert werden.

0
Oubyi, UserMod Light  31.08.2017, 13:27

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?

0
Suboptimierer  31.08.2017, 13:52
@Oubyi, UserMod Light

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.

1
Brainchild  31.08.2017, 14:25
@Oubyi, UserMod Light

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.

1
gute555frage555 
Beitragsersteller
 28.09.2017, 12:28
@Brainchild

Danke für eure hilfreichen Kommentare. Ich probiere das auch gleich mal aus.

0