
Quero automatizar totalmente o processo de limpeza dos dados exportados. Eu quero:
- Mova os dados nas linhas excedentes para a coluna prospectiva. Eu tentei o seguinte código em VB. (Isso é tentar identificar o símbolo @ nos e-mails e, respectivamente, mover todos os endereços de e-mail duas casas para a direita).
Subqwerty()
Dim D como intervalo, r como intervalo
Definir D = Intersecção(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
- Assim que os dados estiverem na coluna correta, preciso automatizar o movimento para a linha correta. Posso facilmente fazer com que eles mudem, mas se um contato não tiver um endereço de e-mail (por exemplo), os e-mails estarão nas linhas erradas quando mudarem.
Responder1
Use 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
Algumas observações sobre seu VBA original:
- "Isso é tentar identificar o símbolo @ nos e-mails...":
left(r.Text,2)
seleciona os dois primeiros caracteres de uma string, nunca será igual a uma string de um caractere ("@")! (meu código decide a localização com base no primeiro caractere após [) - "e, respectivamente, mova todos os endereços de e-mail dois lugares para a direita" - seu código é
OFFSET(0,1)
, que está apenas uma coluna à direita, sempre verifique a consistência do seu código. - "Quando os dados estiverem na coluna correta, preciso automatizar o movimento para a linha correta" - meu código faz as duas coisas na mesma etapa, além do código mais curto, é ainda mais simples.