Página 1 de 1

Macro para copiar dados de planilhas existentes

Enviado: 04 Mai 2015 às 15:43
por aoccarlos
Boa tarde.
Eu trabalho com um documento do excel em que eu tenho que inserir dados em uma tabela manualmente. Essa tabela é dividida em 9 colunas(A:I), e sempre possui menos de 200 linhas (cada semana eu altero os dados dela). Essa pasta de trabalho possui 3 planilhas. Cada uma dessas 3 planilhas se refere a um estabelecimento diferente.
Na coluna "I" de cada planilha esta a categoria dos produtos. Preciso criar uma quarta planilha, onde ao clicar em um botao, a macro vai fazer uma busca nas tres primeiras planilhas, filtrando os produtos de acordo com a coluna I (categoria dos produtos) e vai copiar para a quarta planilha somente as linhas que correspondem a categoria desejada.
Por exemplo: Planilha 1: FloriculturaA, Planilha 2: FloriculturaB, Planilha 3: FloriculturaC, Planilha 4: macro
Na planilha 4, ao clicar sobre o botao, a macro faz a busca nas 3 planilhas A B e C, filtra os dados da coluna I (coluna categorias, sempre será nessa coluna), e as linhas que corresponderem a categoria Rosas serão copiados para planilha 4, uma linha embaixo da outra.
Poderiam me ajudar a fazer essa macro?

Macro para copiar dados de planilhas existentes

Enviado: 04 Mai 2015 às 16:13
por laennder
Podemos ajudar sim, mas você poderia anexar a sua planilha (compactada) para facilitar?

Macro para copiar dados de planilhas existentes

Enviado: 10 Mai 2015 às 15:55
por Yera
Olá.

Sem a planilha é um pouco complicado de entender, mas acredito que um código simples como esse resolva seu problema.

Sub copiarPorCategoria()

categoriaComparada = Application.InputBox("Digite a categoria Desejada")
proximaLinha = 2


aba = "Floricultura_A"
fim = Worksheets(aba).Range("A65536").End(xlUp).Row

For linha = 2 To fim
If Worksheets(aba).Range("I" & linha) = categoriaDesejada Then
Worksheets("Macro").Range("A" & proximaLinha) = Worksheets(aba).Range("A" & linha)
Worksheets("Macro").Range("B" & proximaLinha) = Worksheets(aba).Range("B" & linha)
Worksheets("Macro").Range("C" & proximaLinha) = Worksheets(aba).Range("C" & linha)
Worksheets("Macro").Range("D" & proximaLinha) = Worksheets(aba).Range("D" & linha)
Worksheets("Macro").Range("E" & proximaLinha) = Worksheets(aba).Range("E" & linha)
Worksheets("Macro").Range("F" & proximaLinha) = Worksheets(aba).Range("F" & linha)
Worksheets("Macro").Range("G" & proximaLinha) = Worksheets(aba).Range("G" & linha)
Worksheets("Macro").Range("H" & proximaLinha) = Worksheets(aba).Range("H" & linha)
Worksheets("Macro").Range("I" & proximaLinha) = Worksheets(aba).Range("I" & linha)
proximaLinha = proximaLinha + 1
End If
Next

aba = "Floricultura_B"
fim = Worksheets(aba).Range("A65536").End(xlUp).Row

For linha = 2 To fim
If Worksheets(aba).Range("I" & linha) = categoriaDesejada Then
Worksheets("Macro").Range("A" & proximaLinha) = Worksheets(aba).Range("A" & linha)
Worksheets("Macro").Range("B" & proximaLinha) = Worksheets(aba).Range("B" & linha)
Worksheets("Macro").Range("C" & proximaLinha) = Worksheets(aba).Range("C" & linha)
Worksheets("Macro").Range("D" & proximaLinha) = Worksheets(aba).Range("D" & linha)
Worksheets("Macro").Range("E" & proximaLinha) = Worksheets(aba).Range("E" & linha)
Worksheets("Macro").Range("F" & proximaLinha) = Worksheets(aba).Range("F" & linha)
Worksheets("Macro").Range("G" & proximaLinha) = Worksheets(aba).Range("G" & linha)
Worksheets("Macro").Range("H" & proximaLinha) = Worksheets(aba).Range("H" & linha)
Worksheets("Macro").Range("I" & proximaLinha) = Worksheets(aba).Range("I" & linha)
proximaLinha = proximaLinha + 1
End If
Next

aba = "Floricultura_C"
fim = Worksheets(aba).Range("A65536").End(xlUp).Row

For linha = 2 To fim
If Worksheets(aba).Range("I" & linha) = categoriaDesejada Then
Worksheets("Macro").Range("A" & proximaLinha) = Worksheets(aba).Range("A" & linha)
Worksheets("Macro").Range("B" & proximaLinha) = Worksheets(aba).Range("B" & linha)
Worksheets("Macro").Range("C" & proximaLinha) = Worksheets(aba).Range("C" & linha)
Worksheets("Macro").Range("D" & proximaLinha) = Worksheets(aba).Range("D" & linha)
Worksheets("Macro").Range("E" & proximaLinha) = Worksheets(aba).Range("E" & linha)
Worksheets("Macro").Range("F" & proximaLinha) = Worksheets(aba).Range("F" & linha)
Worksheets("Macro").Range("G" & proximaLinha) = Worksheets(aba).Range("G" & linha)
Worksheets("Macro").Range("H" & proximaLinha) = Worksheets(aba).Range("H" & linha)
Worksheets("Macro").Range("I" & proximaLinha) = Worksheets(aba).Range("I" & linha)
proximaLinha = proximaLinha + 1
End If
Next

End Sub

Grande abraço.