Zellinhaltsvergleich / Probl. mit month() , year()

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Zellinhaltsvergleich / Probl. mit month() , year()
von: Jeremy
Geschrieben am: 09.10.2003 16:29:48

Hallo Forum,

ich habe hier ein Problem, dass mir echt Kopfzerbrechen verursacht:

In meinem Quellcode habe ich irgendwann diese Msgbox zur Überprüfung eingebaut:

MsgBox "Aus den beiden Zellinhalten: " & Cells(6, 10) & " und " & Cells(35, 15) & "folgt dieser Vergleich: If " & Month(Cells(6, 10)) & " = " & Month(Cells(35, 15)) & " und " & Year(Cells(6, 10)) & " = " & Year(Cells(35, 15))

... und das ist das Resultat:

Aus den beiden Zellinhalten: 20.01.2004 und Jan.04
folgt der Vergleich: If 1 = 1 und 2004 = 2003

Wie kann es sein, dass Excel nicht die Jahreszahl richtig erkennt?!
Oder besser:
Welchen Fehler sehe ich Blindfisch in meinem Code nicht?

Danke,
Jeremy

Bild


Betrifft: AW: Zellinhaltsvergleich / Probl. mit month() , year()
von: Jörg Gradert
Geschrieben am: 09.10.2003 16:55:49

Hallo Jeremy,
in Zelle O35 =Cells(35,15)musst Du Jan.04 eingeben, oder ein Januardatum in 2004.
Format Zellen benutzerdefiniert MMM.JJ

Aus ="Jan.04" (ist Text) kann Excel keine Jahreszahl erkennen.
Warum dann 2003 angenommen wird, kann ich nicht erklären.

Richtig ist es, wenn der Wert rechtsbündig in der Zelle steht.

Deine MsgBox ist OK.

Gruss Jörg


Bild


Betrifft: AW: Zellinhaltsvergleich / Probl. mit month() , year()
von: Jeremy
Geschrieben am: 09.10.2003 16:59:53

Hey Jörg,

aber warum erkennt er dann den Monat richtig?
Ich habe auch noch andere Datumswertde durchlaufen z.B.: bei
Mrz.03 und 23.03.2003
da klappt alles einwandfrei?!

Ich kapier einfach nicht, wie ich das beseitigen kann

...Jeremy... (sehr verwirrt...)


Bild


Betrifft: OFFEN: Probl. mit month() , year()
von: Jörg Gradert
Geschrieben am: 09.10.2003 18:31:17

Hallo Jeremy,
mit Jan.04 als Text in Zelle O35

in VBA
= Year(Cells(35, 15)) gibt immer 2003 zurück.
mit Jan.2004 funktioniert es

als Formel
=Jahr(O35)ergibt 2004

Verstehen tue ich es noch nicht

Gruss Jörg


Bild


Betrifft: Lösung: Probl. mit month() , year()?
von: Jörg Gradert
Geschrieben am: 09.10.2003 21:27:49

Hallo Jeremy,
in Zelle O35:
Formatiere die Zelle auf Benutzerdefiniert MMM.JJ und gebe anschliessend Jan.04 ein.

Wenn Die Zelle vorher auf Text formatiert ist und Du dann Jan.04 eingibst funktioniert es nicht korrekt.

Erklären kann ich es immer noch nicht.

Gruss Jörg


Bild


Betrifft: AW: Lösung: Probl. mit month() , year()?
von: PeterW
Geschrieben am: 09.10.2003 21:43:02

Hallo Jörg,

hab das vorhin auch mal versucht (in XP) nachzuvollziehen. Da gibt es keine Probleme. Eingabe in A1 "Jan.03" (ohne Anführungszeichen) wird als 1.1.2003 in der Bearbeitungszeile erkannt und sowohl die Formeln als auch VBA arbeiten korrekt.
https://www.herber.de/bbs/user/1369.xls

Gruß
Peter



Bild


Betrifft: AW: Lösung: Probl. mit month() , year()?
von: Jörg Gradert
Geschrieben am: 09.10.2003 22:29:00

Hallo Peter,
Es funktioniert bei 9.0 2000 ebenso richtig, wenn die Zelle Standard formatiert ist.
So wie Jeremy das Problem beschreibt, kann ich mir nur folgenden Sachverhalt vorstellen.
Am Beispiel deiner Tabelle:
A1 wird als Text formatiert (ist noch Standard). Dann wird Jan.07 eingegeben.
Ergebnis:

Jan.07 2007 2003
1 1
1 7

Gruss Jörg


Bild


Betrifft: Hier die Datei
von: Jörg Gradert
Geschrieben am: 09.10.2003 22:35:31

Hallo Peter,

https://www.herber.de/bbs/user/1370.xls

Gruss Jörg


Bild


Betrifft: OFFEN: Lösung funktioniert bei mir nicht....
von: Jeremy
Geschrieben am: 10.10.2003 07:50:39

Guten Morgen Jörg und an alle, die sich hier sonst noch probiert haben!
Danke!

Ich habe Deinen Tipp ausprobiert, die Tabelle erstellt, die Formatierung vorgenommen und hinterher die Werte eingetragen. Aber leider, es funktioniert dann immer noch nicht...

Merkwürdig ist allerdings:
Wenn ich anstatt mmm. yy oder mmm.yy
dd/mm/yy als Formatierung eingeben, dann funktioniert es einwandfrei!
ABER: eigentlich dürfte es nicht funktionieren, denn der Vergleich der in der MsgBox angezeigt wird lautet immernoch z.B.:
Aus 20.01.2004 und 03.01.04 folgt trotzdem noch
If 1 = 1 und 2004 = 1899?!
Da aber zwei identische Werte Bedingung für eine Schleife sind, dürften die Ausführungen innerhalb der Schleife doch gar nicht getätigt werden?!
Das werden sie aber doch?!

Ich bin ratlos...
Jeremy


Bild


Betrifft: OFFEN: Lösung funktioniert bei mir nicht....
von: Jeremy
Geschrieben am: 10.10.2003 08:32:01

Ein weiterer Test, der Zeigt, dass irgendwas mit der Datumsformatierung nicht stimmt:
Cells(w, 10) wird von einem anderen Tabellenblatt mit der Formatierung "dd/mm/yy" geholt.
Ich habe die komplette Spalte hiermit umformatiert:
Cells(w, 10) = Format(Cells(w, 10), "mmm yy")

... und das ist das Resultat

15.08.2003 -> 03.08.03
03.10.2003 -> Okt 03
16.09.2003 -> 03.09.03
20.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
21.01.2004 -> 04.01.03
20.08.2003 -> 03.08.03

Spinnen denn jetzt ALLE DatumsFormatierungen?!

Jeremy


Bild


Betrifft: AW:Lösung funktioniert bei mir nicht....
von: Jörg Gradert
Geschrieben am: 10.10.2003 13:08:11

Hallo Jeremy,
ich kann auf die Datei von PeterW nicht mehr zugreifen, Du vielleicht auch nicht.
Darum hier:

https://www.herber.de/bbs/user/1381.xls

Zeigt diese Tabelle bei dir korrekt an (SpalteB=SpalteC)?
Eingabe in Zelle A1.
Spalte B sind Formeln Spalte C sind Makros.
A1 Standard formatiert (dann hast Du nicht den "." hinter Jan), dieser wurde aber mit eingegeben.



Gruss Jörg


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Spaltenbreite"