Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
876to880
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

datumsformat in wenn-Funktion

datumsformat in wenn-Funktion
09.06.2007 09:57:00
Desesperado
Hallo, ich suche die Lösung für folgendes Problem:
Ich möchte das heutige Datum in einer Liste in einem anderen Datums-Format ausgeben (z.B. Samstag statt 9.6.07) als die anderen Daten.
Es nützt mir nichts, es als Zeichenfolge anders (z.B. fett) zu formatieren, wie unter bedingter Formatierung ausschließlich möglich.
Auch das umwandeln in Text ist nicht die Lösung, da ich mit dem Datum weiterarbeiten will.
Benutzerdefinierte Formatierung wiederum erkennt kein Datum, erst recht nicht das heutige, sondern nur >0, Bleibt noch die wenn-Funktion, aber wie lässt sich dort das Ergebnis einer Bedingung entsprechend formatieren (etwa in diesem Sinne: wenn(A1=heute();A1 mit gewünschtem Format, z.B. TTTT;A1)?
Vielen Dank im Voraus

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: datumsformat in wenn-Funktion
09.06.2007 10:03:00
Hajo_Zi
Hallo Desesperado,
warum
"Benutzerdefinierte Formatierung wiederum erkennt kein Datum,"
ist Deine Eingabe vielleicht Text?

AW: datumsformat in wenn-Funktion
09.06.2007 10:11:00
Desesperado
Hallo Hajo, danke für die schnelle Antwort.
Die Eingabe ist kein Text, sondern ein Datum, z.B. 9.6.07. Wenn das Datum das heutige ist, soll das Datumsformat geändert werden. Er soll also z.B. Samstag anzeigen, das Datum aber als Datum und nicht als Text beibehalten. Ich sehe nicht, wie das mit benutzerdefiniertem Format gehen könnte, selbst, wenn er ein Datum als Text ansehen würde. Oder geht das doch? Mein Ansatz ist eher über die Wenn-Funktion, die gibt mir aber nicht die Möglichkeit das Ergebnis beliebig zu formatieren. Geht das vielleicht mit if in VBA?

Anzeige
AW: datumsformat in wenn-Funktion
09.06.2007 10:13:06
Hajo_Zi
Hallo Desesperado,
soll nur das Heutge Datum als Samstag angezeigt werden?
Ansonsten Format TTT
Gruß Hajo

AW: datumsformat in wenn-Funktion
09.06.2007 10:17:00
Desesperado
Genau, das ist das Problem. Nur das heutige Datum soll anders dargestellt werden.

AW: datumsformat in wenn-Funktion
09.06.2007 10:26:22
Hajo_Zi
Hallo Desesperado,
da wirst Du nichts mit Formatierungen machen können das muss über VBA gemacht werden. Ich vermute mal es ist immer einen andere Zelle.
Das ist mir einfach zu aufwendig. Es muss ja nicht nur das aktuelle Datum umformatiert werden sondern auch das letzte Datum.
Als Ansatz mal folgende Datei von meiner HP
http://hajo-excel.de/chCounter3/getfile.php?id=81
Aber ich vermute mal bei Deinem VBA Stand bekomst Du das nicht umgeschrieben.
Gruß Hajo

Anzeige
AW: datumsformat in wenn-Funktion
09.06.2007 10:46:54
Desesperado
Vielen Dank auf jeden Fall. Schade, dass so ein einfaches Formatierungsproblem nicht mit einfachen Mitteln lösbar ist.

AW: datumsformat in wenn-Funktion
09.06.2007 11:00:01
ingUR
Hallo, @Desesperado,
einfach ist Dein Formatierungsproblem eben nicht, zumal Du nichts über den tatsächlichen Aufbau Deiner Tabelle verräts und auch nicht über diew Arbeitsweise.
Nehem ich an, dass in der Spalte B ab der Zeile 3 die Datumsangaben stehen, die formatiert weden sollen, so könnte dazu das folgende Makro dienen:

Option Explicit
Sub BedDatumFormat()
Dim rngC As Range
For Each rngC In Range("B3:B" & Cells(Rows.Count, 2).End(xlUp).Row)
With rngC
If .Value2 = CLng(Now()) Then .NumberFormat = "dddd" Else .NumberFormat = "dd.mm. _
yyyy"
End With
Next
End Sub


Wollte man nun aber einzelene Zellen oder Zellenbereich überwachen, so dass bei eingabe des heutigen Datums die Formatierung automatisch wechselt, so wäre die Routine, etwas umgestalltet, in den VBA-Projektordner des betreffenden Tabellenblattes anzuorden:


Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
If .Value2 = CLng(Now()) Then .NumberFormat = "dddd" Else .NumberFormat = "dd.mm. _
yyyy"
End With
End Sub

Dieses sind allerdings nur grobe Skizzen, die nach Deinen Anforderungen angepaßt werden müßten.
Gruß,
Uwe

Anzeige
AW: datumsformat in wenn-Funktion
09.06.2007 11:51:00
Desesperado
Hallo Uwe, dein Vorschlag kommt der Sache schon ziemlich nahe.
Mit
With Active.Cell
If .Value2 = CLng(Now()) Then .NumberFormat = "dddd" Else .NumberFormat = "dd.mm.yyyy" etc.
kann ich eine selektierte Zelle wie gewünscht formatieren.
Was jetzt noch fehlt ist folgendes: Die Daten stehen in einer Spalte, die einzelnen Positionen ändern sich aber immer mal wieder (deine Art die Zellen anzusprechen liefert leider eine Fehlermeldung 1004). Also würde ich gerne die Liste der Daten über einen von mir festgelegten Excel-Namen ansprechen, z.B. "Datumsliste" und dann über das Range-Objekt alle Daten abfragen (und zwar nicht manuell sondern automatisch, also wohl mit Workbook_Open. Geht das einfach?
Gruß

Anzeige
AW: datumsformat in wenn-Funktion
09.06.2007 12:13:55
Josef
Hallo ?,
probier's mal so.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Open()
Dim rng As Range

With Sheets("Tabelle1").Range("A:A")
    
    .NumberFormat = "dd.mm.yyyy"
    Set rng = .Find(What:=Date, LookAt:=xlWhole, LookIn:=xlFormulas)
    
    If Not rng Is Nothing Then rng.NumberFormat = "dddd"
    
End With

Set rng = Nothing

End Sub

Gruß Sepp

Anzeige
AW: datumsformat in wenn-Funktion
09.06.2007 14:14:20
Desesperado
Hallo Sepp
Dein Vorschlag funktioniert auch, allerdings steht mir nicht die ganze Spalte für Datumsangaben zur Verfügung. Wie spreche ich einen Teil einer Spalte (leider nicht immer denselben), am besten über einen Namen an?
Gruß
Gerd

AW: datumsformat in wenn-Funktion
09.06.2007 14:17:33
Josef
Hallo Gerd,
das geht einfach indem du statt

With Sheets("Tabelle1").Range("A:A")



With Sheets("Tabelle1").Range("dein Name")


schreibst, wobei "dein Name" natürlich der entsprechende Name in der Tabelle ist.

Gruß Sepp

Anzeige
AW: datumsformat in wenn-Funktion
09.06.2007 14:51:07
Desesperado
Hallo Sepp, danke, jetzt klappt's und mit wirklich geringem Aufwand.
Die Idee mit Range("Name") hatte ich auch schon, aber wie so oft hat ein Fehler an anderer Stelle eine Fehlermeldung hervorgerufen.
Meine Version (sicher noch verbesserbar, und komischerweise mit CLng(Now()) -1, denn die Funktion gibt bei mir nicht das heutige, sondern das morgige Datum zurück):

Public Sub Workbook_Open()
Dim n As Integer
For n = 1 To Sheets("Planilha").Range("Test").Cells.Count
With Sheets("Planilha").Range("Test").Cells(n)
If .Value2 = CLng(Now() - 1) Then .NumberFormat = "dddd" Else .NumberFormat = "dd.mm.yyyy"
End With
Next
End Sub


Nochmals vielen Dank an alle für die prompte Hilfe.
Gerd

Anzeige
AW: datumsformat in wenn-Funktion
09.06.2007 15:05:00
Josef
Hallo Gerd,
wenn schon mit Schleife, dann so.
Public Sub Workbook_Open()
Dim rng As Range

For Each rng In Sheets("Planilha").Range("Test")
    If rng = Date Then rng.NumberFormat = "dddd" Else rng.NumberFormat = "dd.mm.yyyy"
Next

End Sub

Das du "CLng(Now() -1) nehmen musst ist klar. NOW() gibt ja das aktuelle Datum plus Uhrzeit zurück. Mit CLng() wandelst du diesen Wert in eine Ganzzahl vom Typ Long um und dabei wird, wenn die Uhrzeit nach 12:00 liegt, aufgerundet und du erhälst das morgige Datum.
Gruß Sepp

Anzeige
AW: datumsformat in wenn-Funktion
09.06.2007 15:59:50
Desesperado
Hm, mein VBA, wirklich bescheiden...
mit CLng(Now()) hätte es also morgen früh wieder eine Überraschung gegeben!
Wo lassen sich solche Dinge nachlesen? Die Microsoft Hilfe für VBA war da leider keine wirkliche Hilfe.
Gruß
gerd

AW: datumsformat in wenn-Funktion
09.06.2007 16:50:00
ingUR
Hallo, Gerd,
es ist schön, dass es geklappt Dank Sepps Hilfe geklappt hat. Es war ein Fehler von mir Now() in diese Funktion einzuführen, doch auf das einfache Date bin ich in dem Moment des Schreibens nicht gekommen.
Zu "Retten" wäre die Sache, wenn geschrieben worden wäre : CLng(Now()-0.5), denn so wir immer ein Wert übergeben, der als Ergebnis der Wandlung das heutige Datum liefert, also eben den Wert, den auch Date liefert.
Gruß,
Uwe
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige