Automatizar el movimiento de las celdas, preferiblemente utilizando condiciones de estilo si/cuándo.

Automatizar el movimiento de las celdas, preferiblemente utilizando condiciones de estilo si/cuándo.

ingrese la descripción de la imagen aquí

Quiero automatizar completamente el proceso de limpieza de datos exportados. Yo quiero:

  • Mueva los datos de las filas desbordadas a su columna potencial. Probé el siguiente código en VB. (Esto intenta identificar el símbolo @ en los correos electrónicos y, respectivamente, mover todas las direcciones de correo electrónico dos lugares a la derecha).

subqwerty()
    Atenuar D como rango, r como rango
    Establecer D = Intersección (ActiveSheet.UsedRange, Rango ("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

  • Una vez que los datos están en la columna correcta, necesito automatizar el movimiento a la fila correcta. Puedo hacer que aumenten fácilmente, pero si un contacto no tiene una dirección de correo electrónico (como ejemplo), los correos electrónicos estarán en las filas incorrectas cuando aumenten.

Respuesta1

Utilice este código:

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

Algunas observaciones sobre su VBA original:

  • "Esto está tratando de identificar el símbolo @ en los correos electrónicos ...": left(r.Text,2)selecciona los dos primeros caracteres de una cadena, ¡nunca será igual a una cadena de un carácter ("@")! (mi código decide la ubicación según el primer carácter después de [)
  • "y, respectivamente, mueva todas las direcciones de correo electrónico dos lugares a la derecha": su código es OFFSET(0,1), que está solo una columna a la derecha, siempre verifique la coherencia de su código.
  • "Una vez que los datos están en la columna correcta, necesito automatizar el movimiento a la fila correcta". Mi código hace ambas cosas en el mismo paso, además de un código más corto, es aún más simple.

información relacionada