Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
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
Inhaltsverzeichnis

Datum aus Oracle-Abfrage als Datum formatieren

Datum aus Oracle-Abfrage als Datum formatieren
02.09.2019 11:19:29
Klexy
Hallo zusammen,
Ich habe einen Excel-Export aus einer Oracle-Datenbank. In diesem Export sind ein paar Datums-Spalten, die mit dem Datentyp "DATE" esportiert werden. Excel stellt diese Datume aber als String dar, wodurch sie nicht sortiert und sonstwie weiterverarbeitet werden können.
Musterdatei: https://www.herber.de/bbs/user/131780.xlsx
Die Zellen sind alle im Zahlenformat "Standard".
Um die Strings in ein Datum zu verwandeln, könnte man manuell in die Zelle doppelklicken und sie mit Enter wieder verlassen. Das ist bei tausenden Zellen nicht machbar.
Wie kann ich die entsprechenden Zellen per VBA möglichst spaltenweise als ordentliches Datum formatieren?
Ich habe bis jetzt nur die Möglichkeit entdeckt, durch alle Zellen (tausende!) einzeln durchzugehen:
Sub DatumSpalten_Formatieren()
Dim Hier As Range, GanzeSpalte As Range, GanzUnten As Long, Zelle As Range, ZahlenFormat As  _
Variant
GanzUnten = ActiveSheet.UsedRange.Rows.Count
Set Hier = Range("B1")
Do While Hier  ""
Hier.Select
Set GanzeSpalte = Range(Hier.Offset(1, 0), Cells(GanzUnten, Hier.Column))
GanzeSpalte.Select
For Each Zelle In GanzeSpalte
Zelle.Select
If Zelle  "" Then
Zelle.Value = CDate(Zelle.Value)
End If
Next Zelle
Set Hier = Hier.Offset(0, 1) ' nächste Spalte
Loop
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum aus Oracle-Abfrage als Datum formatieren
02.09.2019 11:36:22
Sigi
Hallo Klexy,
Ohne VBA, folgende Schritte:
Eine 1 irgendwo eingeben.
Diese 1 in die Zwischenablage kopieren
Alle deine Textdaten markieren
Rechte Maustaste
Inhalte einfügen
multiplizieren
dann Zellen nach gewünschtem Datumsformat formatieren
Durch die Multiplikation werden deine Texte zu Zahlen, die nur formatiert werden müssen.
Grüße
Sigi
...und Sigi's Vorschlag Aufzeichnen! (owT)
02.09.2019 11:38:23
EtoPHG

AW: Datum aus Oracle-Abfrage als Datum formatieren
02.09.2019 17:55:04
Klexy
Danke. Funktioniert einwandfrei.
Allerdings werden alle Zellen fett. Aber das kann man ja nachträglich korrigieren.
@EtoPHG: Und natürlich hab ich es gleich aufgezeichnet, um zu sehen, was es tut.
Anzeige
Funktioniert doch nicht
02.09.2019 18:26:35
Klexy
Uuuuund: funktioniert doch nicht. Keine Ahnung, warum ich vorhin der Meinung war, dass es funktioniert.
Wahrscheinlich die manuelle Version, aber nicht die VBA-Version. Das scheint dann wieder einer der Fälle zu sein, wo die Aufzeichnug beim Abspielen nicht funktioniert.
Oder wo liegt mein Fehler?
Sub DatumSpalten_Formatieren()
Dim KopfAnfang As Range, Hier As Range, GanzeSpalte As Range, GanzUnten As Long
Dim EinserZelle As Range
GanzUnten = ActiveSheet.UsedRange.Rows.Count
Range("A1").Select
Set KopfAnfang = Cells.Find(What:="LOBID", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True, SearchFormat:= _
False)
Set Hier = KopfAnfang
Set EinserZelle = Hier.End(xlToRight).Offset(0, 1)
EinserZelle.Value = "1"
Hier.Select
Do While Hier  ""
Hier.Select
If Right(Hier, 4) = "DATE" Then
Set GanzeSpalte = Range(Hier.Offset(1, 0), Cells(GanzUnten, Hier.Column))
' funktioniert nicht
EinserZelle.Copy
GanzeSpalte.Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
Selection.Replace What:=0, Replacement:="", LookAt:=xlWhole ' Leere Zellen wieder  _
leeren
GanzeSpalte.NumberFormat = "dd/mm/yyyy"
GanzeSpalte.Font.Bold = False
End If
Set Hier = Hier.Offset(0, 1)
Loop
EinserZelle.Clear
End Sub

Anzeige
AW: Datum aus Oracle-Abfrage als Datum formatieren
02.09.2019 11:39:57
ChrisL
Hi
z.B. so...
Sub t()
Dim c As Range
For Each c In ActiveSheet.UsedRange
If IsDate(c) Then c = CDate(c)
Next c
End Sub

Übrigens mit PowerQuery (gratis Add-In resp. bei neuen Versionen integriert) kannst du relativ einfach eine Datenverbindung erstellen und dann gleichzeitig die Typenkonvertierung vornehmen. Könnte eine elegante Alternativlösung sein.
cu
Chris
Danke
02.09.2019 17:51:04
Klexy
Danke, aber dein Makro rumpelt auch einzeln durch alle Zellen. Das ist genau meine bisherige Lösung, und die dauert ewig.

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige