Home Excel - Dicas Microsoft Excel VBA Excel VBA - AutoFiltros Excel planilha vba autofiltro para folha de planilhas

Excel planilha vba autofiltro para folha de planilhas

E-mail Imprimir PDF

Saberexcel - O site de quem precisa aprender macros Microsoft Excel VBA

Esse macro do Aplicativo Microsoft Excel VBA(Visual Basic Application), filtra determinados ítens de uma tabela da folha de Planilha principal, para as referidas folhas de planilhas conforme critério na tabela, isto é, distribui dados para as folhas de planilhas correspondentes, filtrando os dados. Observe que o macro monta os cabeçalhos e retorna os dados relacionados a folha de planilha, montando um relatório para cada ítem e também organiza na ordem crescente por data, há uma rotina para essa finalidade, chamada Sub Ordenar_Dados(Argumentos).

Option Explicit
Dim vTabela_Recap() As Variant

Sub Distribuir_dados_planilhas()
Dim Tableau_Recup As Variant

Dim L As Integer, Item As Integer, vUltimaLinha As Integer, x As Integer
Dim Col As Byte, vUltimaColuna As Byte
Dim vNomePlanilha As String
Dim vColecaoPlanilhas As Collection
Dim vTabela_Cabecalho(4) As Variant
 
  vTabela_Cabecalho(0) = "DATA"
  vTabela_Cabecalho(1) = "NOME-SOBRENOME"
  vTabela_Cabecalho(2) = "PLANILHA"
  vTabela_Cabecalho(3) = "PRE-INSRIÇÃO"


Set vColecaoPlanilhas = New Collection
x = -1
  With Worksheets("Dados")
      vUltimaLinha = .Range("A65536").End(xlUp).Row
      vUltimaColuna = .Range("IV7").End(xlToLeft).Column
      Tableau_Recup = .Range(.Cells(7, 1), .Cells(vUltimaLinha, vUltimaColuna))
On Error Resume Next
     For L = 2 To UBound(Tableau_Recup, 1)
        vColecaoPlanilhas.Add Tableau_Recup(L, 3), CStr(Tableau_Recup(L, 3))
     Next
On Error GoTo 0
Err.Clear
  End With
Application.ScreenUpdating = False
For L = 1 To vColecaoPlanilhas.Count
        
         vNomePlanilha = vColecaoPlanilhas(L)
 
 With Worksheets(vNomePlanilha)
          vUltimaLinha = .Range("A65536").End(xlUp).Row + 1
            vUltimaColuna = .Range("IV7").End(xlToLeft).Column
                     .Range(.Cells(6, 1), .Cells(vUltimaLinha, vUltimaColuna)).ClearContents
     For Item = 1 To UBound(Tableau_Recup, 1)
         If vColecaoPlanilhas(L) = Tableau_Recup(Item, 3) Then
                          x = x + 1
             ReDim Preserve vTabela_Recap(4, x)
                 vTabela_Recap(0, x) = Tableau_Recup(Item, 1) 'data
                 vTabela_Recap(1, x) = Tableau_Recup(Item, 2) 'nome sobrenome
                 vTabela_Recap(2, x) = Tableau_Recup(Item, 3) 'planilha
                 vTabela_Recap(3, x) = Tableau_Recup(Item, 4) 'Preinscrição
                 
         End If
    Next

   'chamando a subrotina
   Ordenar_Dados vTabela_Recap

  For Item = 0 To UBound(vTabela_Cabecalho, 1)
                          .Cells(1, 1) = "Planilha"
                          .Cells(1, 2) = vNomePlanilha
                          .Cells(5, 1 + Item) = vTabela_Cabecalho(Item)
  Next
     vUltimaLinha = .Range("A65536").End(xlUp).Row + 1
     .Range("A" & vUltimaLinha).Resize(UBound(vTabela_Recap, 2) + 1, UBound(vTabela_Recap, 1)) = Application.Transpose(vTabela_Recap)
 
  End With
  Application.ScreenUpdating = True
      x = -1
      vNomePlanilha = ""
Erase vTabela_Recap
Next
MsgBox ("Dados filtrados e separados por ordem com sucesso!!"), vbInformation, "Saberexcel - o site das macros"
End Sub


'rotina para ordenar os dados em ordem crescente , é chamada no macro acima : Ordenar_Dados vTabela_Recap
 Sub Ordenar_Dados(ByVal T As Variant)
  Dim Col As Integer, Col2 As Integer
  Dim Tmp1 As Variant, Tmp2 As Variant, Tmp3 As Variant, Tmp4 As Variant
  For Col = 0 To UBound(T, 2)
    For Col2 = 0 To UBound(T, 2)
    If T(0, Col2) > T(0, Col) Then
           Tmp1 = T(0, Col): Tmp2 = T(1, Col): Tmp3 = T(2, Col): Tmp4 = T(3, Col)
           T(0, Col) = T(0, Col2): T(1, Col) = T(1, Col2): T(2, Col) = T(2, Col2): T(3, Col) = T(3, Col2)
           T(0, Col2) = Tmp1: T(1, Col2) = Tmp2: T(2, Col2) = Tmp3: T(3, Col2) = Tmp4
      End If
    Next
  Next
  vTabela_Recap = T
End Sub



Aprenda tudo sobre planilhas do Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos Saberexcel




 Baixe o exemplo de planilha conteno os macros acima
Excel planilha vba autofiltro para folha de planilhas (24.71 KB)



Publicidade
Compre com segurança, garantia e ótimos preços
Eletrônicos - Submarino.com.br

Última atualização em Qua, 10 de Agosto de 2011 08:06  

Comentários  

 
# Gloria 02/03/2014 21:04
Uso o office 2007, nesse exemplo esta retornando a data invertida. tem como resolver?

RESPOSTA:
tem como voce resolver fazendo a formatação para célula
ex: format(cells(vL in,"b"),"dd-mm-yyy")
aconselho a instalar o uma versão do Office mais recente
caso queira me enviar a planilha para verificarmos.....
Fique com Deus,
Expedito Marcondes.
Responder | Responder com citação | Citação
 

Adicionar comentário

"Jamais considere seus estudos como uma obrigação, mas como uma oportunidade invejável para aprender a conhecer a influência libertadora da beleza do reino do espírito, para seu próprio prazer pessoal e para proveito da comunidade." Albert Einstein


Código de segurança
Atualizar

Pesquisa Google SaberExcel

Publicidade Google

Publicidade

Rastreamento Correios

Digite o número do SEDEX conforme o exemplo:
Correios do Brasil

Assinatura SaberExcel

Google Associados

Depoimentos

Visitantes SaberExcel

Excel VBA Estudos®
mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterHoje4808
mod_vvisit_counterOntem5154
mod_vvisit_counterEsta Semana25009
mod_vvisit_counterSemana passada30982
mod_vvisit_counterEsse mês43197
mod_vvisit_counterMês passado153723
mod_vvisit_counterTodos10466026
Aprenda MS Excel VBA

Adicione Saberexcel Favoritos

 
 

Aprenda tudo sobre o Aplicativo Microsoft Excel VBA

Aprenda tudo sobre o Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos Saberexcel,


   Sobre as WorksheetFunctions Funções de Planilhas que retornam valores do VBA