Hallo ihr fleissigen Hellfer Ich stehe wieder mal vor einem für mich unlösbaren Problem. Ich kopiere in meiner Tabelle Daten von Spalte "AD7:AD" nach Spalte "BU7:BU". Das funktioniert, wenn die Daten immer in der gleichen Spalte stehen. Leider ist dies nicht immer der Fall. Darum möchte ich über die Spaltenüberschriften kopieren. Wie muss ich das Makro ändern, dass anstelle der Spalte "BU7:BU" die Überschrift "Geburtsdatum" verwendet wird?
Sub Daten_Ersetzen() ' Geburts Datum Dim Monate, i& Dim cell As Range Dim rng As Range Dim lastRow As Long lastRow = Cells(Rows.Count, "BU").End(xlUp).Row Monate = Application.GetCustomListContents(3) Set rng = Sheets("Tabelle1").Range("BU7:BU" & lastRow) ' "BU7:BU" ändern auf Spaltenüberschrift "Geburtsdatum" Set rng = Sheets("Tabelle1").Range("AD7:AD" & lastRow) ' "AD7:AD" nicht ändern da sich die Spalte nie ändert. Sheets("Tabelle1").Range("BU7:BU" & lastRow).Copy rng ' "BU7:BU"ändern auf Spaltenüberschrift "Geburtsdatum" With rng.SpecialCells(xlCellTypeConstants)
.Replace " ", ".", xlPart
For i = 1 To 12 .Replace Monate(i), Format(i, "00") Next End With For Each cell In rng cell = Replace(cell, "BEF.", "vor ") cell = Replace(cell, "BEF..", "vor ") cell = Replace(cell, "AFT.", "nach ") cell = Replace(cell, "AFT..", "nach ") cell = Replace(cell, "ABT.", "um ") cell = Replace(cell, "ABT..", "um ") If Mid(cell, 2, 1) = "." Then cell = "0" & cell Next End Sub
PS: ich weis zuerst: Formel, Zeilen markieren, Auswahl erstellen, Oberste Zeile usw. Hoffe auf eure Hilfe. Gruss Martin
(08.05.2022, 18:21)luna101 schrieb: Set rng = Sheets("Tabelle1").Range("BU7:BU" & lastRow) ' "BU7:BU" ändern auf Spaltenüberschrift "Geburtsdatum" Set rng = Sheets("Tabelle1").Range("AD7:AD" & lastRow) ' "AD7:AD" nicht ändern da sich die Spalte nie ändert. Sheets("Tabelle1").Range("BU7:BU" & lastRow).Copy rng ' "BU7:BU"ändern auf Spaltenüberschrift "Geburtsdatum" ....
Warum überschreibst du rng? Damit wird die erste Zeile überflüssig.
versuchs mal damit. Dim lsecondGeb lsecondGeb = Application.Match("Geburtsdatum", Sheets("Tabelle1").Rows(6), 1) Sheets("Tabelle1").Cells(lsecondGeb, 7).Resize(lastRow - 7).Copy Rng
Guten Tag ralf_b, danke für deine Hilfe. Leider bringt es einen Laufzeisfehler:1004 Habe mal die Mappe beigelegt. Bitte um nochmalige Hilfe. Gruss Martin
PS: werde dann versuchen Hochzeits- und Todesdatum selber zu bereinigen
Zitat:Ich kopiere in meiner Tabelle Daten von Spalte "AD7:AD" nach Spalte "BU7:BU".
Aber
Zitat:Set rng = Sheets("Tabelle1").Range("AD7:AD" & lastRow) ' "AD7:AD" nicht ändern da sich die Spalte nie ändert. Sheets("Tabelle1").Range("BU7:BU" & lastRow).Copy rng ' "BU7:BU"ändern auf Spaltenüberschrift "Geburtsdatum"
macht genau das Gegenteil
Würdest du dich da bitte festlegen? Und die Spalte "Geburts Datum" ist nicht das Gleiche wie die Spalte "Geburtsdatum". Ich habe aber auch einen Patzer drin gehabt. deshalb hier mal ein aktualisierter Vorschlag. kopiert wird von BU nach AD
Guten morgen ralf_b Danke für deine Makroanpassung. Ja es wird von "BU" nach "AD" kopiert. Entschuldigung. Dein Makro funktioniert, was das kopieren betrifft. Es sollte aber anschliessend noch die (exotischen) Datum in Spalte "AD" umwandeln. (zB. 4 JAN 1600 nach 4.01.1600) Besser wäre noch es könnte nach 04.01.1600 umwandeln. Gruss Martin