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, 19:48 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2022, 20: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, 19:26 (Dieser Beitrag wurde zuletzt bearbeitet: 03.06.2022, 19: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.