Jump to content

Seleccionar área de acordo com critério estabelecido e Copiar linhas inteiras


jtiagodias
 Share

Recommended Posts

Ora viva,

Depois de algum tempo de afastamento destas bandas cá estou novamente cheio de dúvidas...

Há quem diga que programar é como andar de bicicleta mas eu não concordo... Algum tempo sem pensar nestas rotinas e tudo se torna muito mais complicado...

Mas pronto...

Basicamente preciso de ajuda em muita coisa.

Tema: Tenho uma tabela que exporto de outro programa. Têm diversos elmentos e, com base num deles, que o utilizador define, quero seleccionar todas as linhas que cumprem o critério, copiá-las e colá-las noutro fichiero.

Ex:

                    Nome        Variável              Etiqueta            Indice

                      asdasdf      fsdf                        asfsf              11

                      assdf        fsdf                        asfsf              11

                      ...

                      dfgfg          sdfgsdf                adfsdf            500

                      dfgfg          sdfgsdf                adfsdf            500

Objectivo:

O utilizador selecciona qual o indice que pretende. O excel percorre toda a lista e selecciona todos os que têm o indice que ele seleccionou.

Problema... Fiz um if com offset e o código só para na última liha que verifica a condição...

No exemplo que dei acima queria, po exemplo, que ele seleccionasse ambas as linhas que tinham indice 11 ou 500 e, caso existissem mais linhas, que elas tb fossem seleccionadas...

Para depois copiar e colar numa folha de cálculo nova...

Já agora como consigo mudar o nome da dolha de cálculo no ficheiro que criei para colar estes valores...

Desde já obrigado

Link to comment
Share on other sites

Ora viva...

Nenhuma resposta???

Certamente que não me fiz explicar bem...

Basicamente o que eu quero é, ao percorrer uma lista de dados, quando o primeiro resultado que ecnontrar for igual à condição que coloquei, o código selecciona essas linha, prossegue pelas linhas seguintes enquanto a condição se verificar e, na primeira célula em que a condição não se verificar deixa de seleccionar as linhas...

Assim consigo seleccionar todas as linhas que, numa célula, verifiquem a condição pretendia e depois posso copiá-las e colar onde pretendo.

Alguém consegue dar-me uma ajuda neste código???

Link to comment
Share on other sites

Caro joseA..

Incrivel...

Isto quem sabe sabe....

J+a verifiquei o exemplo e está muito bom... Faz mais do que estava a pedir e, na realidade, responde a quase todas as minhas dúvidas.

Espero não ter dado muito trabalho e/ou preocupação...

Vou utilizá-lo sem dúvida...

Obrigado pela indispensável ajuda.

ESTE TÓPICO ESTÁ CONCLUÍDO. Desculpem mas não sei como o poderei indicar como concluído.

Link to comment
Share on other sites

Provavelmente não me expliquei bem...

O que quero é uma macro que seleccione um grupo de linhas que satisfaça um critério pré-definido...

De qualquer forma obrigado pela dic dos filtros...

Quem puder ajduar com o que eu quero..

Se calhar eu é que não me expliquei bem ou não dei a papinha toda. O advanced filtering permite fazer o mesmo que o joseA mostrou (sem retirar qualquer mérito, pois está bastante bem feito). O advanced filtering pode copiar segundo um determinado critério para outra zona também, sem a necessidade de código, ou com uso de código para ser mais flexível. Advanced filtering é diferente de um filtro normal.

Link to comment
Share on other sites

Na verdade o exemplo passado é sim um filtro.

Inclusive no combobox1 ocorre a filtragem de dados, não repetidos da coluna D da folha de dados.

Sim, com a aplicação do advanced filtering orientado pelo nosso amigo MetalFatigue também seria possivel fazer.

Quantas mais soluções se apresentarem mais rico se torna o tópico.

:lamo:  😛

Link to comment
Share on other sites

Na verdade o exemplo passado é sim um filtro.

Inclusive no combobox1 ocorre a filtragem de dados, não repetidos da coluna D da folha de dados.

Sim, com a aplicação do advanced filtering orientado pelo nosso amigo MetalFatigue também seria possivel fazer.

Quantas mais soluções se apresentarem mais rico se torna o tópico.

:lamo:  😉

Bom dia.

Em qual momento nos códigos abaixo relaciono a Coluna D como referência para realizar o Filtro? E como faço para alterar para outro coluna?

Obrigado desde já.

Sub FiltroAvançado()

Application.EnableEvents = False

        Dim lastRow As Long

        Dim lastResultRow As Long

        Dim X As Long

        ' Verifica qual a ultima célula preenchida

        lastRow = Plan1.Cells(Rows.Count, 1).End(xlUp).Row

        ' Apaga valores anteriores

        Plan2.Range("A2:AE65536").ClearContents

       

        lastResultRow = 2 'linha resultado

       

        ' Ciclo em todas as linhas

        For X = 2 To lastRow '1 Linha dados pequisa

       

          ' verifica se o valor é igual ao da pesquisa

          If Plan1.Cells(X, 4).Value = UserForm1.Label2.Caption Then '11 coluna pequisa

         

                ' Copia os valores

                Plan2.Cells(lastResultRow, 1).Value = Plan1.Cells(X, 1).Value

                Plan2.Cells(lastResultRow, 2).Value = Plan1.Cells(X, 2).Value

                Plan2.Cells(lastResultRow, 3).Value = Plan1.Cells(X, 3).Value

                Plan2.Cells(lastResultRow, 4).Value = Plan1.Cells(X, 4).Value

                Plan2.Cells(lastResultRow, 5).Value = Plan1.Cells(X, 5).Value

                lastResultRow = lastResultRow + 1

          End If

        Next

    Application.EnableEvents = True

End Sub

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.