Automatizar o movimento de células, preferencialmente usando condições de estilo if / when

0

Euqueroautomatizartotalmenteoprocessodelimpezadedadosexportados.Euquero:

  • Movaosdadosnaslinhasdeestouroparasuacolunapotencial.EutenteioseguintecódigonoVB.(Issoestátentandoidentificarosímbolo@nose-mailse,respectivamente,movertodososendereçosdee-mailparadoislugaresàdireita).

Subqwerty()DimDAsRange,rAsRangeSetD=Intersect(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

  • Quando os dados estiverem na coluna correta, preciso automatizar o movimento para a linha correta. Eu posso facilmente fazer com que eles mudem, mas se um contato não tiver um endereço de e-mail (como um exemplo), os e-mails estarão nas linhas erradas quando eles mudarem.
por thatguy 12.10.2015 / 07:04

1 resposta

0

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.
por 12.10.2015 / 14:59