• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jtiagodias

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

12 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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:  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sem dúvida. Eu só acho que se as ferramentas já existem não é preciso andar a inventa-las :thumbsup:

Além de que o rapaz deve ter lido "Filter" e pensou logo que era a filtragem normal e que eu estava a dizer coisas fora do contexto do que ele pretendia. Foi mais para o esclarecer.

cumprimentos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No caso a da coluna D (4) esta relacionada pelo valor númerico. Explique melhor o que pretendes ou mostre um exemplo para facilitar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora