axelf
Goto Top

Zellenfarbe mit if-Abfrage ändern

Hallo zusammen,

bin mir sicher es ist eine einfache Frage, aber ich seh den Wald vor Bäumen nicht mehr. Will es aber vermeiden ein Makro oder VBA-Script zu schreiben.

Ich habe eine Notebookverwaltungsliste. Hammerwort, hammerliste.
In der Trage ich nun das Datum ein, an dem ich eine Wartung am Notebook vergenommen habe.
Im unteren Bereich der Liste, steht das aktuelle Datum =Today().
Nun dachte ich mir müsste das ganze doch so gehen:

=if Date(year(G6);month(G6)+6;day(G6)) > Today().... ändere Frabe auf orange,
ist es größer als 12 Monate ändere die Farbe auf rot, ist es unter 6 und 12 Monate ändere Farbe auf grün.

Die Liste dient der Übersicht über Notebooks in der Firma und deren Zustand.

Ist das überhaupt so machbar wie ich mir das Vorstelle oder muss ich da anders ran gehen?
Mit dieser Bedingten Formatierung hat es nicht geklappt.
Wie steuere ich die Farben über Befehle und wie bringe ich die ganzen IF-Abfragen hintereinander?

Wäre super wenn mir einer helfen könnte. Verrenne ich mich da in was?

Gruß & danke schon mal
Flo

Content-ID: 80083

Url: https://administrator.de/contentid/80083

Ausgedruckt am: 19.11.2024 um 13:11 Uhr

creyzee
creyzee 06.02.2008 um 19:57:50 Uhr
Goto Top
hallo,

nur mal so ne frage: welche software nutzt du denn? zellen gibt es doch überall...

naja, ich gehe mal von excel aus. was spricht denn gegen vb? mit:

Range("G6").Select
Select Case Date - CDate(ActiveCell.Text)
Case Is <= 183: Selection.Interior.ColorIndex = 43
Case 183 To 365: Selection.Interior.ColorIndex = 6
Case Is > 365: Selection.Interior.ColorIndex = 3
End Select

in die sub von nem schalter gepackt sollte das funktionieren. mit excel geht ansonsten noch die "bedingte formatierung":

- markiere die zellen
- wähle im menü format\bedingte formatierung
- definiere denn zellwert zwischen 0 und 183 und lege mit format den hintergrund auf grün
- definiere denn zellwert zwischen 183 und 365 und lege mit format den hintergrund auf gelb
- definiere denn zellwert zwischen 365 und 99999 und lege mit format den hintergrund auf rot

bis denne

gruß by creyzee
bastla
bastla 06.02.2008 um 20:14:47 Uhr
Goto Top
Hallo AxelF!

"Bedingte Formatierung" ist schon das richtige Stichwort - die Formel ("Formula Is" - nicht "Cell Value Is" verwenden!) muss allerdings geringfügig anders aussehen:
=Date(year($G6);month($G6)+6;day($G6)) > Today()
Durch das "$" vor der Spaltenangabe lässt sich dieses Format dann auch auf die restlichen Zellen der Zeile übertragen. Wenn Du noch Today() durch einen Zellbezug (in diesem Fall zur Gänze absolut, also etwa $G$1) ersetzt, kannst Du anstatt "Today()" einen beliebigen Stichtag verwenden.

Grüße
bastla
manuel-r
manuel-r 06.02.2008 um 20:16:08 Uhr
Goto Top
Wie wär's damit
=TEXT(HEUTE();"#")-TEXT(A4;"#")>180  
für die bedingte Formatierung. Hab' das eben mal getestet. Und wenn ich dich richtig verstanden habe macht es genau das, was du willst. In A4 steht in dem Beispiel das fragliche Datum; die 180 entsprechend für 180 Tage Differenz. Bei den Optionen der bedingten Formatierung musst du vorher von Zellwert ist auf Formel ist umstellen.

Manuel
AxelF
AxelF 07.02.2008 um 00:19:48 Uhr
Goto Top
Guten Abend,

erstmal vielen Dank für die schnellen Antworten.
Werde diese gleich morgen früh testen und euch wissen lassen ob es das ist was ich wollte; glaube aber schon das eines davon geht, nun habe ich ja eine Auswahl face-smile

Vielen Dank nochmal.
AxelF
AxelF 07.02.2008 um 07:58:34 Uhr
Goto Top
Morgen zusammen,

creyzee sagmal, wie mache ich des dann wenn ich deine Lösung auf die anderen Spalten ausweiten will? Ich brauch immer a weng bis ichs kapier face-wink
Ich habe jetzt G6 fix drin stehen, sprich ich kann ja nicht einfach wie in Excel normal, die "Formel" auf die anderen Zellen übertragen. Die Liste geht ab G6 los und endet im Augenblick bei G33, wobei immer wieder spalten hinzu & weggenommen werden. Es wäre also dynamisch.
Wie setze ich das in die Tat um und woher bekomme ich die Zahlen / Angaben für die Farben?
Danke dir schonmal.


Gruß
Flo
AxelF
AxelF 07.02.2008 um 20:24:47 Uhr
Goto Top
Abend zusammen,

habe nun endlich eine passende Lösung gefunden, welche auch zellenunabhängig funktioniert.

Private Sub CommandButton1_Click()
Dim today As Date
Dim d As Date

today = Now()

d = ActiveCell.Value

t = today - d

Select Case t

Case Is <= 183: Selection.Interior.ColorIndex = 4
Case 183 To 365: Selection.Interior.ColorIndex = 6
Case Is > 365: Selection.Interior.ColorIndex = 3

End Select
End Sub

Man geht mit der Maus auf die Zelle in der das Datum steht und klickt "Wartunszustand abfragen". Damit wird die Variable t berechnet. Die Berechnung nimmt das aktuelle Datum und zieht das Datum, den Wert in der Zelle" davon ab. Somit erhält man eine Zahl.
Diese wird, wie im 1. Vorschlag von creyzee, mit verschiedenen Möglichkeiten verglichen.
An hand derer, welche zutrifft, wird die Farbe der Zelle gesetzt.

Danke nochmals für die Anregungen.
Falls Frage, fragen.

Gruß
Flo
bastla
bastla 07.02.2008 um 21:47:43 Uhr
Goto Top
Hallo AxelF!

Obwohl ich selbst gerne Scripts einsetze, frage ich mich in diesem Fall trotzdem, warum Du die auf einzelne Zellen bezogene VBA-Lösung der ohne weiteres Zutun dauernd sichtbaren "Bedingten Formatierung" vorziehst?

Grüße
bastla
AxelF
AxelF 08.02.2008 um 07:47:04 Uhr
Goto Top
Hi bastla,

es geht ist die schwierigkeit mit dem Gelb. Im VB kann ich sagen Case 183 to 365, wie schreibe ich sowas in die Bedingteformatierung? Ich bekomme entweder alles gelb oder rot angezeigt wenn ich das damit versuche. Weil einfach die < > Zeichen nicht sitmmen, da ich nicht angeben kann von wann bis wann die Formel greifen soll. Wenn du eine Lösung hast, wie ich das schreibe, versuche ich es gerne. Lerne immer gerne dazu.


Gruß
Flo
bastla
bastla 08.02.2008 um 10:44:50 Uhr
Goto Top
Hallo AxelF!

Mit "Hinzufügen >>" kannst Du (auch in älteren Excel-Versionen zumindest 2) weitere Bedingungen verwenden, sodass Du, zusammen mit der "normalen" Formatierung der Zelle, insgesamt 4 Fälle unterscheiden kannst.

Grüße
bastla
AxelF
AxelF 08.02.2008 um 10:49:49 Uhr
Goto Top
Hi bastla,

das meine ich nicht. Es sind aber im Office 2003 maximal 3.
Die eine würde > das bekommen und auf grün setzen.
Die zweite sollte ja den Range zwsichen den 183 und 365 darstellen; welches Zeichen gebe ich der?
Wie stelle ich das in der Formel da? Die dirtte Formal wrüde < bekommen. Sprich Endergebnis:

1. Formel
=Date(year($G6);month($G6)+6;day($G6)) > Today()

2.Formel
=Date(year($G6);month($G6)+??;day($G6)) ?? Today()

3. Formel
=Date(year($G6);month($G6)+12;day($G6)) > Today()

Verstehst du was ich meine? Wie gebe ich die Bedingung dazwischen an?

Gruß
Flo
bastla
bastla 08.02.2008 um 11:11:29 Uhr
Goto Top
Hallo AxelF!

Wie gebe ich die Bedingung dazwischen an?
Indem Du eine sinnvolle Reihenfolge wählst: Bei Bedingung ">" mit der Überprüfung des größten Wertes beginnen ...

Es sind aber im Office 2003 maximal 3.
... womit ich bei der Addition 3 bedingte Formate + 1 "normales" Format trotzdem auf die angeführten 4 Fälle komme.

Grüße
bastla
AxelF
AxelF 08.02.2008 um 11:21:26 Uhr
Goto Top
Hi bastla,

also ich bekomms nicht so nicht hin.
Das mit dem Script läuft am Besten und als einziges zuverlässig.
Egal wie ich die Formel in die Bedingte Formatierung eintrage, er macht mir keinen Status gelb.
Aber trotzdem danke.

Gruß
Flo
bastla
bastla 08.02.2008 um 16:02:58 Uhr
Goto Top
Hallo AxelF!

Ich habe ja keineswegs vor, Dich zu Deinem Glück zu zwingen face-wink, aber wenn Du folgende Formeln (in dieser Reihenfolge und mit den Farben Grün, Gelb und Rot) verwendest, klappt es auch mit der bedingten Formatierung:
=(Today()-$G6)<=183
=(Today()-$G6)<=365
=(Today()-$G6)>365

Grüße
bastla
AxelF
AxelF 08.02.2008 um 16:13:14 Uhr
Goto Top
Hi bastal,

danke für den Vorschlag face-smile
Nu hab ich aber das Problem das er den 29.06.2006 als gelb markiert und nicht als rot, wie es sein sollte. Woran kann das liegen?

Gruß
Flo
bastla
bastla 08.02.2008 um 16:43:07 Uhr
Goto Top
Hallo AxelF!

29.06.2006 als gelb markiert
Schwer erklärlich (und bei mir auch nicht nachvollziehbar) - bist Du sicher, dass das Datum richtig eingetragen ist? Versuch vielleicht, über das Menü "Edit / Delete / All" den gesamten Zellinhalt zu löschen, das Datum nochmals einzugeben und dann das Format zu übertragen.

Grüße
bastla