Hallo ihr fleissigen Helfer, ich habe eine Tabelle, da stehen rechts "Quelldaten". Daraus werden für mich wichtige Daten nach links kopiert nach (Zieldaten). Werden in den "Zieldaten" Korrekturen gemacht, so werden sie per "Worksheet_Change(ByVal Target As Range)" wieder nach rechts in die Quelldaten kopiert. Das funktioniert bis auf kleine Ausnahmen recht gut.
Ausnahmen: 1. Wenn ich links bei den "Zieldaten" ein Eintrag in einer Zelle lösche, sollt dieser auch in der "Quelldatei" rechts gelöscht werden. zB: in "H7" (Peter) löschen, dann sollte (Peter) auch in "AA7" , "BF7" und "BR7" gelöscht werden. oder: in "AB7" (Meier) löschen, dann auch in "BS7" (Meier) löschen usw.
2. In der "Quelldatei" sollten bei den Datum die Tage 01 bis 09 durch 1 bis 9 ersetzt werden, also einstellig.
Da ich das nicht hinkriege bitte ich um Eure Hilfe, diese Probleme zu lösen. Mit dankbaren Grüssen Martin
Sub Datum1() Dim loLetzte As Long Dim loRow As Long Dim loMonat As Long
' Geburtsdatum With Sheets("Tabelle1")
loLetzte = .Cells(Rows.Count, 27).End(xlUp).Row For loRow = 7 To loLetzte loMonat = Mid(.Cells(loRow, 30), 4, 2) * 1 .Range("BV" & loRow) = Left(.Cells(loRow, 30), 2) & "." & Mid("JANFEBMRZAPRMAiJUNJULAUGSEPOKTNOVDEZ", (loMonat - 1) * 3 + 1, 3) & "." & Right(.Cells(loRow, 30), 4) Next End With End Sub
Sub Datum2() Dim loLetzte As Long Dim loRow As Long Dim loMonat As Long ' Heirat
With Sheets("Tabelle1") loLetzte = .Cells(Rows.Count, 27).End(xlUp).Row For loRow = 7 To loLetzte loMonat = Mid(.Cells(loRow, 32), 4, 2) * 1 .Range("CD" & loRow) = Left(.Cells(loRow, 32), 2) & "." & Mid("JANFEBMRZAPRMAiJUNJULAUGSEPOKTNOVDEZ", (loMonat - 1) * 3 + 1, 3) & "." & Right(.Cells(loRow, 32), 4) Next End With End Sub
Sub Datum3() ' Todesdatum Dim loLetzte As Long Dim loRow As Long Dim loMonat As Long With Sheets("Tabelle1")
loLetzte = .Cells(Rows.Count, 27).End(xlUp).Row For loRow = 7 To loLetzte loMonat = Mid(.Cells(loRow, 34), 4, 2) * 1 .Range("BX" & loRow) = Left(.Cells(loRow, 34), 2) & "." & Mid("JANFEBMRZAPRMAiJUNJULAUGSEPOKTNOVDEZ", (loMonat - 1) * 3 + 1, 3) & "." & Right(.Cells(loRow, 34), 4) Next End With End Sub
Code:
Sub NamenBereinigen() Dim loA As Long, loB As Long Dim loLetzte As Long With Tabelle1 loLetzte = .Cells(Rows.Count, 27).End(xlUp).Row For loA = 7 To 26
For loB = 7 To loLetzte If Len(.Cells(loA, loB)) > 2 Then If Left(.Cells(loA, loB), 2) = "+ " Or UCase(Left(.Cells(loA, loB), 2)) = "M " Or UCase(Left(.Cells(loA, loB), 2)) = "V " Then .Cells(loA, "AA") = Mid(.Cells(loA, loB), 3, 99) .Cells(loA, "BR") = Mid(.Cells(loA, loB), 3, 99) Else .Cells(loA, 27) = .Cells(loA, loB) .Cells(loA, 70) = .Cells(loA, loB) End If End If Next Next End With
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
02.06.2022, 20:48 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2022, 21:15 von luna101.)
Guten Abend Uwe das ist . Das bereinigen der Datum hat funktioniert. für deine Hilfe. Ein Problem gelöst.
Gruss Martin Guten Abend Edgar, für dein Makro. Werde es testen und melde mich wieder. Wünsche noch ein schöner Abend. Gruss Martin Guten Abend sbb für dein Vorschlag. So wie ich das interpretiere, wird dabei der Monat geändert, oder liege ich da falsch? Wenn ja, wo muss ich den einfügen ?
zum 1. Thema stellt sich wahrscheinlich jedem die Frage des Bezuges der Spalten zueinander.
Wenn ich es richtig verstanden habe, kommt das leeren der Zellen als auslösendes Ereignis nur in den Spalten H und AB in Frage. Wenn in Spalte H eine Zelle in Zeile 7 gelöscht wird, sollen dazu in dieser Zeile 7 die Werte in den Zellen der Spalte AA , BF und BR entfernt werden.
03.06.2022, 20:26 (Dieser Beitrag wurde zuletzt bearbeitet: 03.06.2022, 20:39 von luna101.)
Guten Abend Uwe Wenn Daten im Tabellenteil links in den Spalten "G" bis Spalte "AH" etwas gelöscht wird, sollte im Tabellenteil rechts in den Spalten (Überschriften) "BC" bis "DG" auch die analogen Zelleninhalte gelöscht werden.
Beispiele: "H7" Eintrag löschen, dann sollte auch in "AA7" , "#Gen 2" ("BE7") , "Vorname" ("BR7") der Wert gelöscht werden. (Hier glaube ich, dass es mit der Überschrift "#Gen 2" Probleme gibt.) "B7" lEintrag löschen, dann sollte auch in "Nachname" ("BS7") der Wert gelöscht werden. "AC7" Eintrag löschen, dann sollte auch in "Rufname" ("BT7") der Wert gelöscht werden.
Wenn ich ein Wert lösche, ein Leerzeichen eingebe und dann die Zelle verlasse, werden teilweise die korrespondierenden Zelleinträge auch gelöscht.
Hoffe, das ich es einigermassen verständlich geschildert habe. Gruss Martin
anbei eine mögliche Lösung. Es ist allerdings schon problematisch, da ich nicht einschätzen kann, ob es infolge dieses Eingriffes Probleme mit mir nicht bekannten Prozeduren gibt. Teste erst mal ob dass deinen Vorstellungen entspricht. Vorgehenseiweise:
Zu löschende Zelle (kein Zellbereich!) anklicken - Entf. Taste drücken - Wert wird an relevanter Stelle aus rechtem Bereich entfernt.
Es gibt ein paar auf Public gesetzte Variablen. Falls es erforderlich werden sollte, kann man Diese nach Ablauf der Prozedur noch entleeren.
Guten Abend Uwe danke für deine Hilfe. Werde die Erweiterung mal testen. Erster Eindruck ist Vielversprechen. Es sind noch einige Spalten in welchem die Einträge nicht gelöscht werden. Aber Vorest mal ein liches . Melde mich wieder. Gruss und eine schöne Woche wünscht Martin
Guten Tag Uwe Es funktioniert genauso, wie ich es mir vorgestellt habe. Eine kleine Änderung (wenn möglich), hätte ich noch gerne. Da in den Spalten ab "56" die Daten nicht immer in der gleichen Spalte eingetragen sind, sollten an Stelle der Spaltenbezeichnungen die Überschriften angesprochen werden.