none
AutoFilter - AutoFiltro no Excel RRS feed

  • Pergunta

  •  

    AutoFilter - AutoFiltro no Excel

    Suponha que eu tenha a seguinte lista na planilha Plan1:

         A
    1 TIPO
    2 carro
    3 moto
    4 caminhão
    5 carro
    6 moto
    7 empilhadeira
    8 carro

    Suponha agora que eu tenha aplicado um filtro, selecionando carro:

         A
    1 TIPO
    2 carro
    5 carro
    8 carro

    Como eu faço para retornar um RANGE contendo APENAS os endereços A2, A5 e A8 ?

    Usando VBA eu so consigo retornar todo o endereço da lista, ou seja A2:A8.

    segunda-feira, 2 de fevereiro de 2009 15:44

Respostas

  • Certo...Então use esta rotina que verifica o filtro e retorna as células.

    Esta rotina percorre da célua a2 até o fim verificando as linhas que estão visíveis, caso encontre uma célula vazia entende-se que chegou ao fim da coluna e termina o For, aparecendo uma mensagem de todas as céluas..

    Sub VerificaFiltro()  
        Dim N As Long, Ref$  
        For N = 2 To 65536  
            If Cells(N, 1) = "" Then Exit For  
            If Rows(N).Hidden = False Then  
                Ref = Ref & Cells(N, 1).Address & Chr(10)  
            End If  
        Next  
        MsgBox Ref  
    End Sub 

    Qualquer dúvida post denovo.
    Não se esqueça de marcar a resposta como respondida se solucionar.
    Até..
    • Marcado como Resposta Lúcius sexta-feira, 6 de fevereiro de 2009 13:37
    sexta-feira, 6 de fevereiro de 2009 12:02

Todas as Respostas

  • Mas qual seria seu objetivo com isto??
    Se for somar, contar, média...... a função subtotal resolve...
    terça-feira, 3 de fevereiro de 2009 17:27
  •  No meu caso não. Necessito manipular estes dados via VBA, e não na planilha!
    quinta-feira, 5 de fevereiro de 2009 14:13
  • Certo...Então use esta rotina que verifica o filtro e retorna as células.

    Esta rotina percorre da célua a2 até o fim verificando as linhas que estão visíveis, caso encontre uma célula vazia entende-se que chegou ao fim da coluna e termina o For, aparecendo uma mensagem de todas as céluas..

    Sub VerificaFiltro()  
        Dim N As Long, Ref$  
        For N = 2 To 65536  
            If Cells(N, 1) = "" Then Exit For  
            If Rows(N).Hidden = False Then  
                Ref = Ref & Cells(N, 1).Address & Chr(10)  
            End If  
        Next  
        MsgBox Ref  
    End Sub 

    Qualquer dúvida post denovo.
    Não se esqueça de marcar a resposta como respondida se solucionar.
    Até..
    • Marcado como Resposta Lúcius sexta-feira, 6 de fevereiro de 2009 13:37
    sexta-feira, 6 de fevereiro de 2009 12:02
  • Muito obrigado, ótima resposta! Mas eu pensava que usando o autoFiltro, houvesse algum método que já retorna-se um Range contendo o endereço desta células já filtradas!

    sexta-feira, 6 de fevereiro de 2009 13:37