Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#633
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?
#637
Podemos ajudar sim, mas você poderia anexar a sua planilha (compactada) para facilitar?
#757
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.
Editado pela última vez por laennder em 10 Mai 2015 às 15:58, em um total de 1 vez. Razão: Remoção de link: Referências a outros sites são aceitáveis ​​se diretamente abordar a pergunta feita (Regra nº 4)
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord