
Ich möchte den Prozess der Bereinigung exportierter Daten vollständig automatisieren. Ich möchte:
- Verschieben Sie die Daten in den Überlaufzeilen in die entsprechende Spalte. Ich habe den folgenden Code in VB ausprobiert. (Dabei wird versucht, das @-Symbol in den E-Mails zu identifizieren und alle E-Mail-Adressen entsprechend um zwei Stellen nach rechts zu verschieben.)
Unter qwerty()
Dim D als Bereich, r als Bereich
Setze D = Schnittmenge(ActiveSheet.UsedRange, Range("D:D"))
For Each r In D
If Left(r.Text, 2) = "@" Then
r.Copy r.Offset(0, 1)
r.Clear
End If
Next r End Sub
- Sobald die Daten in der richtigen Spalte sind, muss ich die Verschiebung in die richtige Zeile automatisieren. Ich kann sie problemlos nach oben verschieben, aber wenn ein Kontakt beispielsweise keine E-Mail-Adresse hat, werden die E-Mails beim Hochschieben in den falschen Zeilen angezeigt.
Antwort1
Verwenden Sie diesen Code:
Sub qwerty()
Dim y As Integer, x As Integer
y = 2
Do Until Cells(y, 4) = ""
If Cells(y, 3) = "" Then
Select Case Left(Cells(y, 4))
Case "[E": x = 6
Case "[H": x = 7
Case "[M": x = 8
Case "[A": x = 9
Else: x = 10
End Select
Cells(y - 1, x) = Cells(y, 4)
Rows(y).EntireRow.Delete
Else
y = y + 1
End If
Loop
End Sub
Einige Anmerkungen zu Ihrem ursprünglichen VBA:
- "Hier wird versucht, das @-Symbol in den E-Mails zu identifizieren ...":
left(r.Text,2)
wählt die ersten beiden Zeichen einer Zeichenfolge aus, es wird nie einer einstelligen Zeichenfolge ("@") entsprechen! (Mein Code entscheidet über den Speicherort basierend auf dem ersten Zeichen nach [) - „und verschieben Sie alle E-Mail-Adressen jeweils um zwei Stellen nach rechts“ – Ihr Code lautet
OFFSET(0,1)
, also nur eine Spalte nach rechts. Überprüfen Sie stets die Konsistenz Ihres Codes. - „Sobald die Daten in der richtigen Spalte sind, muss ich die Bewegung in die richtige Zeile automatisieren“ – mein Code erledigt beides im selben Schritt und ist nicht nur kürzer, sondern auch noch einfacher.