Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Makro-Code benötigt

Forumthread: Makro-Code benötigt

Makro-Code benötigt
07.04.2025 19:52:43
Martin2404
Hallo Zusammen,

ich hatte schon mal eine funktionierend Lösung, habe aber nun einen neuen Rechner und es versäumt mir das Makro zu sichern.
Aus einem Datenimport interpretiert Excel einige Daten nicht korrekt. Ich habe eine Spalte die die Kostenstelle im Format ##-#### darstellt. Einige Felder interpretiert Excel als Datum (aber nicht alle).
So wird zum Beispiel aus der Kostenstelle 01-5066 das Datum 01.01.5066, aus der Kostenstelle 06-5060 das Datum 01.06.5060 usw.

Ich hatte mir schon mal ein Makro erstellt, dass die ersten drei Ziffern einfach löscht und aus dem Punkt einen Bindestrich macht, so dass beispielsweise aus 01.07.5062 die Kostenstelle 07-5062 korrigiert wird.
Ich bekomme es leider nicht mehr hin und probiere schon den ganzen Nachmittag daran rum.

Habt Ihr eine Lösung für mich?

Danke
Gruß
Martin
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro-Code benötigt
07.04.2025 20:07:16
Yal
Hallo Martin,

öffne deine Quelle über den Menüpunkt "Daten", "aus Datei", Dateityp auswählen. Bei einem Excel-Quelle musst Du noch anschliessend auswählen, welche Blatt, Tabelle oder benannte Bereich Du laden möchtest.
Am Ende kannst Du die Daten direkt laden, oder davor diese transformieren. Letzteres gibt dir die Möglichkeit, die gezielte Spalte als Text zu deklarieren. Die Transformation (das Tool heisst Power Query und ersetzt sehr gut VBA, wenn es nur um Datenhandlung geht) wird über das Menü "Datei", "Schliessen & laden" geschlossen.

Es ist eine Abfrage, kann also aktualisiert werden: rechtsklick auf die Ausgabetabelle in Excel und "aktualisieren" auswählen. Die neue Version der Quelldatei muss denselben Namen haben, wie die Vorversion.

Mehr über Power Query unter: https://excelhero.de/power-query/power-query-ganz-einfach-erklaert/

VG
Yal

Anzeige
AW: Makro-Code benötigt
07.04.2025 20:12:43
GerdL
Moin Martin,

da VBA nicht ausgeschlossen worden ist:
Sub Unit()


Dim i As Long
Dim Spalte As Long


Spalte = 2 'anpassen

For i = 1 To Cells(Rows.Count, Spalte).End(xlUp).Row
If Cells(i, Spalte).Text Like "##.##.####" Then
Cells(i, Spalte) = "'" & Replace(Mid(Cells(i, Spalte).Text, 4), ".", "-")
End If
Next

End Sub


Gruß Gerd
Anzeige
AW: Makro-Code benötigt
07.04.2025 22:23:06
Martin2404
Dankeschön.
Schaue mir das morgen an.
AW: Makro-Code benötigt
07.04.2025 22:21:18
Martin2404
Deinen Code probiere ich gleich morgen aus.
Danke.
AW: Makro-Code benötigt
07.04.2025 20:12:34
daniel
Hi
kannst du beim Import nicht einstellen, dass die betroffenen Spalten als TEXT zu importieren sind?
Dann findet diese Umwandlung in ein Datum nicht statt.

ansonsten wäre ein mögliches Makro:

dim Zelle as range

for each Zelle in Selection.Specialcells(xlcelltypeconstants, 1)
Zelle.Value = "'" & Format(Zelle.value, "MM-YYYY")
Next


Gruß Daniel
Anzeige
AW: Makro-Code benötigt
08.04.2025 16:22:35
Piet
Hallo

mit diesem kurzen Code sollte es klappen. Setze den Cursor in eine beliebige Spalte.
Bei IF Then bitte die -englische- und Deutsche Schreibweise für Datum beachten!

mfg Piet

Sub Datumformat_ändern()

Dim AC As Range, c As Long, lz1 As Long
c = Selection.Column 'aktuelle Spalte
lz1 = Cells(Rows.Count, c).End(xlUp).Row
For Each AC In Cells(2, c).Resize(lz1, 1)
If AC.NumberFormat = "m/d/yyyy" Then
AC.NumberFormat = "mm-yyyy"
AC.HorizontalAlignment = xlLeft
End If
Next AC
End Sub
Anzeige
AW: Makro-Code benötigt
07.04.2025 22:21:56
Martin2404
Das habe ich schon alles ausprobiert. Funktioniert leider nicht.
Merkwürdigerweise werden auch nur ein kleiner Teil der Daten nicht korrekt aus der Quelldatei gebunden.
Deinen Code probiere ich morgen aus.
Danke.
AW: Makro-Code benötigt
07.04.2025 22:39:57
daniel
naja, umgewandelt wird jeder importierte Wert, den Excel als Datum erkennt.
der "-" ist für Excel neben dem "." ein Trennzeichen, das bei Datumswerten verwendet wird.
Excel erkennt auch unvollständige Datumswerte als solche, dh wenn der Tag fehlt, wird das als Monatswert bzw der 1. des angegebenen Monats gewertet.
Jeder wert, der aus 2+4 Ziffern mit "-" als Trennzeichen besteht, wird in ein Datum gewandelt, sofern der zweistellige Teil zwischen 01 und 12 liegt.
bei 13 kann es kein gültiges Datum sein, da es keinen Monat 13 gibt. Diese Werte bleiben dann Text.

wie gesagt, der korrekte Weg wäre, im Import anzugeben, dass diese Spalte als Text übernommen werden soll und hinter die Spalte mit dem Zahlenformat TEXT zu formatieren, damit keine Umwandlung stattfindet, wenn man später mal in die Zelle klickt und ENTER drückt.
Wie importierst du denn die Werte?

Gruß Daniel
Anzeige
AW: Makro-Code benötigt
08.04.2025 13:09:39
Martin2404
Hallo Daniel,

mit dem Code hier funktioniert das Ganze jetzt, wenn ich mich auf die Zelle setze.

---

Sub KstKorrektur()
'
' KstKorrektur Makro
'

'
Selection.NumberFormat = "mm-yyyy"
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End Sub

---

Bekomme ich es jetzt noch automatisiert, dass er in der Spalte schaut und alle Zellen, die das Format TT.MM.JJJJ haben, automatisch ins Format MM-JJJJ ändert, ohne dass ich die einzelnen Felder anklicke und jedesmal das Makro ausführen muss?
Der Befehl müsste dann in etwa so sein, wie: Schaue in der Spalte und formatiere alle Zellen mit dem Format TT.MM.JJJJ in das Format TT.MM.JJJJ und linksbündig.

Danke.

Gruß
Martin
Anzeige
AW: Makro-Code benötigt
08.04.2025 14:19:31
daniel
naja, welche Spalten betroffen sind, müsstest du ja wissen und kannst diese anstelle des Selection angeben.
du kannst ruhig die ganze Spalte so formatieren, auf die Werte, die Text geblieben sind, wirkt das Zahlenformat nicht.
beachte jedoch, dass das Zahlenformat keine Werte ändert, dh hinter dem angezeigten "04-2025" steckt immer noch das Datum 1.4.2025 bzw dessen Ganzzahlwert.
Wenn du die Liste jetzt weiter auswerten willst, könnte das problematisch werden.
ich würde daher die Makros verwenden, die die Zellwerte tatsächlich umwandeln, bzw. mal beim Import schauen, ob man den nicht entsprechend umstellen kann.

Gruß Daniel
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18