Ir para conteúdo
Fórum Script Brasil
  • 0

Como automatizar a alocação de dados copiados


Luiz_Luiz

Pergunta

Boa noite, estou iniciando no mundo do VBA no Excel e ainda não sei como realizar uma operação automática:

A ideia é: assim que eu colar um conjunto de dados (cada dado com um conteúdo/nome padrão [001, 002... 009...] correspondente com a coluna A) da coluna hipotética X, eu quero que a célula exatamente à direita de cada dado respectivo copiado na coluna X vá pra uma posição exata na coluna B:

Coluna A Coluna B  Coluna X Direita de X

001.                            002.         Valor Z

002. Valor Z              004.          Valor C

003.                           009.          Valor M

004. Valor C

005

...

008

009. Valor M

OBS: os nomes colados na coluna X sempre terão alguma correspondência com os nomes da coluna A (sempre serão códigos fixos)

Alguém poderia me explicar como conseguir realizar esse processo?

Muito obg!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde @Luiz_Luiz

Eu fiz um código baseando a informação que você passou no texto:

image.png.6133b2a9fb121682c9bca195cf220881.png

Código para fazer a função:

Public Sub Luiz_Luiz()
Dim lastRowA As Long 'Ultima Linha da Coluna A
Dim lastRowCad As Long 'Próxima linha a ser cadastrada
Dim columnCad As Long 'Coluna que vai ser lançado o cadastro
Dim plan As Worksheet 'definir a planilha

Set plan = Sheets("Planilha1")


lastRowA = plan.Cells(Rows.Count, "A").End(xlUp).Row

columnCad = 8 'Coluna H
lastRowCad = plan.Cells(Rows.Count, 8).End(xlUp).Row + 1

'Passar por todas as linhas e verificar se tem informação na coluna B
'Se tiver valores na coluna B inserir na próxima linha de cadastro
For x = 1 To lastRowA Step 1
    If plan.Cells(x, "B") <> "" Then
    
        plan.Range(Cells(x, "A"), Cells(x, "B")).Copy
        
        plan.Cells(lastRowCad, columnCad).Select
        
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
        'informa a proximo linha caso exista novo registro
        lastRowCad = lastRowCad + 1
    End If
Next x

Eu deixei "personalizável" a coluna aonde vai ser colocada a informação (columnCad = 8 'Coluna H)

Planilha

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado, Alyson. Minha única dúvida é: se ao invés dos conteúdos de entrada (colados nas colunas X) serem uma sequência numérica (como no meu exemplo: 001, 002...) Forem palavras (sempre fixas também).

Nesse caso, basta que eu substitua isso no código que você escreveu ou teria que ser outro código? Depois eu mando o arquivo aqui, porque com a estrutura exata em mãos fica mais fácil!

Editado por Luiz_Luiz
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...