Automatisierung der Zellbewegung, vorzugsweise unter Verwendung von if/when-Stilbedingungen

Automatisierung der Zellbewegung, vorzugsweise unter Verwendung von if/when-Stilbedingungen

Bildbeschreibung hier eingeben

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.

verwandte Informationen