Automatizando o movimento das células, de preferência usando condições de estilo se/quando

Automatizando o movimento das células, de preferência usando condições de estilo se/quando

insira a descrição da imagem aqui

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.

informação relacionada