Microsoft Excel

Herbers Excel/VBA-Archiv

Datum convertieren nach yyyy-mm-dd

Betrifft: Datum convertieren nach yyyy-mm-dd von: chandler
Geschrieben am: 26.09.2014 19:13:31

Hallo zusammen,

wie koennte man das in einer vba routine realisieren?

In der Spalte A mit einer Datum-Reihe, nach unten variabel lang, im Format: dd.mm.yyyy
soll in das Format: yyyy-mm-dd convertiert werden.

Das Datumformat sollte beibehalten bleiben.

Hat jemand eine Idee und kann helfen?
Vielen Dank im Voraus.

  

Betrifft: AW: Datum convertieren nach yyyy-mm-dd von: Michael H
Geschrieben am: 26.09.2014 20:24:20

Hi,

for i=1 to 65536
cells(i,1)=format(cells(i,1),"YYYY-MM-DD")
if cells(i,1)="" then exit for
next i

und fertig

VG
Michael H


  

Betrifft: AW: Datum convertieren nach yyyy-mm-dd von: chandler
Geschrieben am: 26.09.2014 20:35:52

Hallo Michael,

vielen Dank, aber da tut sich nichts. warum nur?

Gruesse


  

Betrifft: AW: Datum convertieren nach yyyy-mm-dd von: Hajo_Zi
Geschrieben am: 26.09.2014 20:41:37

man könnte vermuten es stehen keine Daten in der Zelle, wie es in Deinem ersten Beitrag stand sondern nur Text der aussieht wie Daten.

Gruß Hajo


  

Betrifft: AW: Datum convertieren nach yyyy-mm-dd von: Ewald
Geschrieben am: 26.09.2014 22:30:09

Hallo,

wie wärs einfach so

For i = 1 To 200
Cells(i, 1).NumberFormat = "YYYY-MM-DD"
Next i
dann bleibt auch das Datum erhalten

Gruß Ewald


  

Betrifft: AW: Datum convertieren nach yyyy-mm-dd von: Michael H
Geschrieben am: 27.09.2014 11:08:18

Hi, dann versuch mal folgendes:

for i=1 to 65536
if isdate(cells(i,1)) then
cells(i,1)=format(cells(i,1),"YYYY-MM-DD")
else
cells(i,2)="Kein Datumsformat erkannt"
end if
if cells(i,1)="" then exit for
next i


  

Betrifft: AW: Datum convertieren nach yyyy-mm-dd von: Hajo_Zi
Geschrieben am: 26.09.2014 20:35:15

Warum nicht einfach Zellen formatieren?

GrußformelHomepage


  

Betrifft: AW: Datum convertieren nach yyyy-mm-dd von: chandler
Geschrieben am: 26.09.2014 21:01:20

Hallo Hajo,

nein, die Spalte hat bereits ein Datumformat. Warum nur die VBA Routine nicht lauft ist mir nicht klar.

Gruesse


  

Betrifft: AW: Datum convertieren nach yyyy-mm-dd von: Hajo_Zi
Geschrieben am: 27.09.2014 09:39:30

gut ich hatte nicht vom Format geschrieben sondern Inhalt. Auch Text kannst Du ein Datumsformat zuweisen.

Gruß Hajo


  

Betrifft: Makro gelaufen? von: Erich G.
Geschrieben am: 27.09.2014 10:14:36

Hi "chandler" (?),
"Warum nur die VBA Routine nicht lauft ist mir nicht klar." Bist du sicher? Was heißt da "läuft nicht"?
Gibt es eine Fehlermeldung?

Lass mal spaßhalber das sehr ähnliche Makro

Sub NeuFormat()
   Dim ii As Long

   For ii = 1 To 5
      Cells(ii, 1).NumberFormat = "d/ mmm/ yy"
   Next ii
End Sub
laufen. Vielleicht siehst du zunächst keine Änderung. Aber schau dir doch mal das Zahlenformat
der Zellen A1 bis A5 an. Das sollte T. MMM. JJ sein - das ist das Ergebnis des Makros.

Dass sich die Anzeige der Werte in den Zellen nicht verändert hat, wird wohl daran liegen, dass in den Zellen
kein Datum, sondern Text steht.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: Was ist ein Datum in Excel? von: Erich G.
Geschrieben am: 27.09.2014 00:44:08

Hi,
da wäre IMHO erst einmal zu klären, was genau in Spalte A steht. Hajo vermutete ja auch schon, dass das Texte sind.

Wenn in A2 so ein Datum steht:
Gib der Zelle A2 vorübergehend mal (per Hand) das Zahlenformat "Standard". Ändert sich die Anzeige?
Wenn da jetzt anstelle des Datums eine Zahl zu sehen ist (Größenordnung 40000), ist alles in Ordnung.
Wenn sich die Anzeige aber nicht geändert hat, also immer noch u. a. zwei Punkte zu sehen sind,
steht kein Datum, sondern ein Text in der Zelle A2.

Schreib doch mal woanders auf dem Blatt in zwei leere Zellen die Formeln
=ISTTEXT(A2)
=ISTZAHL(A2)

Wenn du in eine andere Zelle (z. B. F2) mit Standardformat die Formel
=1*A2
schreibst, wird dabei der Text in A2 zu einer Zahl, einem Datum. Aus A2="07.08.2009" wird 1*A2 = 40032.
Wenn du dann der Zelle F2 (mit dem Wert 40032) ein Datumsformat - etwa TT. MMM. JJJJ - gibst, wird die Zahl 40032
richtig als das Datum
07. Aug. 2009
angezeigt.

Empfehlen möchte ich dir das Lesen z. B. dieser Seite: http://www.online-excel.de/excel/singsel.php?f=128

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Was ist ein Datum in Excel? von: Ewald
Geschrieben am: 27.09.2014 01:51:56

Hallo,

Zitat:

nein, die Spalte hat bereits ein Datumformat.


Gruß Ewald


  

Betrifft: na und ... von: Erich G.
Geschrieben am: 27.09.2014 08:30:03

Hi Ewald,
falls du damit auf meinen vorigen Beitrag antwortest:

"die Spalte hat bereits ein Datumformat": Ja, trotzdem können Texte in den Zellen stehen, oder etwa nicht?

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schönes Wochenende allerseits!


  

Betrifft: AW: Und so habe ich das geloest von: chandler
Geschrieben am: 27.09.2014 11:18:16

Hallo Erich,

vielen Dank, in der Tat, das Makro funktioniert man sieht bloss keine Aenderung in der Spalte.

Ich habe das so geloest, bloed nur dass man die Spalte markieren muss:

Sub test()
Dim d As Range
Columns("A1:A100").Select
For Each d In Selection
Selection.NumberFormat = "yyyy-mm-dd"
Next d
End Sub

Vielen Dank auch an Hajo und Ewald

Gruesse


  

Betrifft: AW: Und so habe ich das geloest von: Erich G.
Geschrieben am: 27.09.2014 11:56:03

Hi ,
bist du sicher, dass in deiner Routine
Columns("A1:A100").Select
steht? Bei mi ergäbe das einen Fehler 1004 - "Anwendungs- oder objektdefinierter Fehler".

Wenn ich das ersetze durch
Range("A1:A100").Select
läuft es fehlerlos durch.

"bloed nur dass man die Spalte markieren muss": Wieso das denn? In meinem Code kam kein Select vor...
Und wie wäre es mit

Sub test2()
   Range("A1:A100").NumberFormat = "yyyy-mm-dd"
End Sub
Jetzt steht die 100 noch fest im Code, das kann zu viel, aber auch zu wenig sein. Variabler ist z. B.
Sub test3()
   Cells(1, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row).NumberFormat = "yyyy-mm-dd"
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: na und ... von: Ewald
Geschrieben am: 27.09.2014 15:15:29

Hallo Erich,

hatte gedacht der Wink mit dem Zaunpfahl reicht.

das Makro formatiert den Wert(Datum)um, wenn du dann in einer MSGBox anzeigen läßt siehst du auch das es richtig ist.

Danach fügst du den Wert in eine Zelle ein,die schon als Datum formatiert ist, hier erkennt Excel das es ein Datum ist und verwendet die Zellenformatierung.

Da sich dadurch nichts in der Tabelle änderte,die Mitteilung es geht nicht.

Es muß also nicht der Wert formatiert werden,sondern das Anzeigeformat und dies geht mit Numberformat.

Gruß Ewald


  

Betrifft: AW: Columns(1).NumberFormat = ... o.T. von: Gerd L
Geschrieben am: 27.09.2014 12:23:05

Gruß Gerd


  

Betrifft: AW: Columns(1).NumberFormat = ... o.T. von: chandler
Geschrieben am: 27.09.2014 15:07:52

Hallo Erich,
hallo Gerd,

vielen Dank fuer euche Hilfe. Beide Ansaetzte sich doch besser, als mein Loesungsansatz.

Nochmals vielen Dank.

Gruesse