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 o seu VBA original:
- "Isso está tentando 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 longa de um caractere ("@")! (meu código decide a localização com base no primeiro caractere depois de [) - "e, respectivamente, movem todos os endereços de e-mail para dois lugares à direita" - seu código é
OFFSET(0,1)
, que é apenas uma coluna à direita, sempre verifique a consistência de seu código. - "Quando os dados estão na coluna correta, preciso automatizar o movimento para a linha correta" - meu código faz os dois na mesma etapa, além de um código mais curto, é ainda mais simples.