
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.