Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  

Recommended Posts

FSoares.FCS    0

Boa tarde Galera, estou com um dilema tenho uma planilha que estou tentando elaborar uma função automática, como não manjo muito do VBA eu uso um pouco a função gravar macro, a planilha tem +- 32 mil linha e quando coloco o filtro para filtrar a palavra "Filial" o sistema para a gravação da macro e mostra o erro "Número excessivo de continuação de linhas", existe uma formula de fazer este filtro?; Se eu fizer normalmente sem usar a gravação o sistema executa normalmente.

Desde já agradeço.

 

segue a macro que estava fazendo e não consigo concluir:


    Cells.Select
    Selection.Copy
    Sheets("Razao").Select
    Range("A1").Select
    ActiveSheet.Paste
    Selection.ColumnWidth = 15
    Columns("F:G").Select
    Range("G1").Activate
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Columns("E:E").ColumnWidth = 4.29
    Columns("D:D").ColumnWidth = 64.29
    Columns("D:D").ColumnWidth = 67.14
    Rows("30558:30558").EntireRow.AutoFit
    Cells.Select
    Cells.EntireColumn.AutoFit
    Cells.EntireRow.AutoFit
    Range("A1").Select
    Cells.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Select
    Cells.EntireColumn.AutoFit
    Range("B2").Select
    Columns("B:B").ColumnWidth = 2.71
    Columns("C:C").ColumnWidth = 5
    Columns("E:E").ColumnWidth = 2.86
    Range("A3").Select
    Rows("3:3").EntireRow.AutoFit
    Columns("B:B").ColumnWidth = 42.57
    Rows("3:3").EntireRow.AutoFit
    Columns("B:B").EntireColumn.AutoFit
    Columns("A:D").Select
    Selection.Insert Shift:=xlToRight
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "FILIAL"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "CONTA"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "DATA"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "C.CUSTO"
    Cells.Select
    Cells.EntireColumn.AutoFit
    Range("A4").Select
    ActiveCell.FormulaR1C1 = "=RC[4]"
    Range("A5").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C"
    Range("A5").Select
    Selection.Copy
    Range("A6").Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Paste
    ActiveSheet.Paste
    Range("A1").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
    Columns("A:A").Select
    ActiveSheet.Range("$A:$L").AutoFilter Field := 5, Criteria1 := Array( _
        "Filial:0101 CONTA - 3.5.1.01.0101 COMPRAS DE IMOBILIZADOS EM GERAL", _
        "Filial:0101 CONTA - 3.9.1.01.0101 ALIMENTACAO DE FUNCIONARIOS", _
        "Filial:0101 CONTA - 3.9.1.01.0102 CESTAS BASICAS", _
        "Filial:0101 CONTA - 3.9.1.01.0104 CONVENIO MEDICO", _
        "Filial:0101 CONTA - 3.9.1.01.0106 SEGURO DE VIDA EM GRUPO", _
        "Filial:0101 CONTA - 3.9.1.01.0109 MEDICINA OCUPACIONAL/ENGENHARIA DO TRABA", _
        "Filial:0101 CONTA - 3.9.1.01.0112 TELEFONIA", _
        "Filial:0101 CONTA - 3.9.1.01.0114 ENERGIA ELETRICA FABRIL", _
        "Filial:0101 CONTA - 3.9.1.01.0117 ANALISES CLINICAS OCUPACIONAIS", _
        "Filial:0101 CONTA - 3.9.1.01.0119 PEDAGIO SEM PARAR", _
        "Filial:0101 CONTA - 3.9.1.01.0121 LOCACAO EQUIPAMENTO DE INFORMATICA", _
        "Filial:0101 CONTA - 3.9.1.01.0127 ALIMENTACAO FUNCIONARIO- CARTAO", _
        "Filial:0101 CONTA - 3.9.1.01.0129 CONVENIO NORTE DAME", _
        "Filial:0101 CONTA - 3.9.1.01.0130 CONVENIO SULAMERICA SAUDE", _
        "Filial:0101 CONTA - 4.1.2.01.0101 CONSUMO DE MATERIA-PRIMA", _
        "Filial:0101 CONTA - 4.1.2.01.0103 CONSUMO DE MATL.AUXILIAR", _
        "Filial:0101 CONTA - 4.1.2.01.0106 CONSUMO PRODUTO ACABADO", _
        "Filial:0101 CONTA - 4.1.2.01.0201 SALARIOS", _
        "Filial:0101 CONTA - 4.1.2.01.0202 FERIAS", _
        "Filial:0101 CONTA - 4.1.2.01.0207 PREVIDENCIA SOCIAL", _
        "Filial:0101 CONTA - 4.1.2.01.0208 FUNDO DE GARANTIA", _
        "Filial:0101 CONTA - 4.1.2.01.0209 REFEICOES", _
        "Filial:0101 CONTA - 4.1.2.01.0210 CESTA BASICA", _

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites
FSoares.FCS    0
  • Autor do tópico
  • a planilha ultrapassar o tamanho exigido, se quiser passo no e-mail 

    o meu é fsoares.fcs@gmail.com

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Patropi    1.458

    Você não consegue anexar, porque a tua planilha deve ter macros, mas basta Zipar que o fórum aceita.

     

    []s

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Agora eu entendi. O problema é que o editor VBA aceita no máximo 24 quebras de linha (esses *_* no final da linha).

     

    Acredito que você tenha 2 opções.

     

    1. Alterar a maneira como você está filtrando os valores (caso isso seja possivel), por exemplo usando *"BOBINADEIRA" para filtar todas as linhas em que essa palavra aparecça.

     

    2. Ir granvando a sua macro aos poucos e ir deletando as quebras de linha manualmente. Por exemplo;

     

    De:

    Sub Filter()
    
    ActiveSheet.Range("$A$1:$L$30582").AutoFilter Field:=6, Criteria1:=Array( _
        "A", "B", "C", _
        "D", "E", _
        "F", "G", "H")
    
    End Sub

    Para:

    Sub Filter()
    
    ActiveSheet.Range("$A$1:$L$30582").AutoFilter Field:=6, Criteria1:=Array("A", "B", "C", "D", "E", "F", "G", "H")
    
    End Sub

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    FSoares.FCS    0
  • Autor do tópico
  • de qualquer forma vai ultrapassar as 24 linha de pesquisa e preciso que seja automático desta forma ficaria manual....mas obrigado.... pela dica.... abraço...

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Eu não sei se te atende, mas outra opção é colocar todos os valores que serão filtrados em uma planilha separada e criar um arranjo com todos eles via macro;

     

    Sub Filtrar()
    
    Dim Delimiter As String
    Dim List As Variant
    
    Delimiter = "[;]"
    
    With ThisWorkbook.Sheets("Plan2")
        For r = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            List = List & Delimiter & .Cells(r, 1)
        Next
    End With
    
    List = Split(Mid(List, Len(Delimiter) + 1), Delimiter)
    
    ThisWorkbook.Sheets("Razao").Range("A:L").AutoFilter 2, List, 7
    
    End Sub

     

    Anexo a sua planilha com essa macro e alguns valores como exemplo.

     

     

    6 - Ajuste do Razão por Centro de Custo Analitico.zip

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    FSoares.FCS    0
  • Autor do tópico
  • Bom dia Camarada, obrigado pela resposta mas no meu caso não dá para separar o filtro.

    A planilha original está no formato abaixo:

    image.thumb.png.2584681bb332eb832827eff4ee3e8470.png

    Eu incluo 4 coluna no inicio e uso o filtro para separar o filial, centro de custo, conta e data, de forma que fique na mesma linha, exemplo abaixo:

     

    image.thumb.png.e787678213f7bc1f7519c6cc0f5ce5c9.png

     

    segue anexo a planilha a primeira é a original e a razão é como tem que ficar.Obrigado.

    6_-_Ajuste_do_Razão_por_Centro_de_Custo_Analitico22_-_Cópia.zip

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    O código abaixo cria uma cópia da aba que estiver selecionada, renomeia ela para "Razao" e formata do jeito que você precisa.

     

    
    Sub Razao()
    
    Dim Headers As Variant
    Dim LR As Long
    
    Headers = Array("FILIAL", "CONTA", "DATA", "C.CUSTO")
    LR = Cells(Rows.Count, 1).End(xlUp).Row
    
    ActiveSheet.Copy , Sheets(1)
    ActiveSheet.Name = "Razao"
    Columns("A:D").Insert
    Columns("C:C").NumberFormat = "dd/mm/aaaa"
    Range("A1").Resize(, 4) = Headers
    Range("A4").Resize(LR).Formula = "=IF(LEFT(E4,6)=""Filial"",LEFT(E4,11),A3)"
    Range("B4").Resize(LR).Formula = "=IF(LEFT(E4,6)=""Filial"",TRIM(MID(E4,12,9999)),B3)"
    Range("C4").Resize(LR).Formula = "=IF(ISNUMBER(E4),E4,C5)"
    Range("D4").Resize(LR).Formula = "=IF(LEN(E3)=9,E3,D3)"
    Calculate
    Cells.Copy
    Cells.PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    
    End Sub

    Mas qual é relação disso com os filtros?

    • Obrigado 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    FSoares.FCS    0
  • Autor do tópico
  • Em 28/08/2017 às 14:46, Wendell Menezes disse:

    O código abaixo cria uma cópia da aba que estiver selecionada, renomeia ela para "Razao" e formata do jeito que você precisa.

     

    
    
    Sub Razao()
    
    Dim Headers As Variant
    Dim LR As Long
    
    Headers = Array("FILIAL", "CONTA", "DATA", "C.CUSTO")
    LR = Cells(Rows.Count, 1).End(xlUp).Row
    
    ActiveSheet.Copy , Sheets(1)
    ActiveSheet.Name = "Razao"
    Columns("A:D").Insert
    Columns("C:C").NumberFormat = "dd/mm/aaaa"
    Range("A1").Resize(, 4) = Headers
    Range("A4").Resize(LR).Formula = "=IF(LEFT(E4,6)=""Filial"",LEFT(E4,11),A3)"
    Range("B4").Resize(LR).Formula = "=IF(LEFT(E4,6)=""Filial"",TRIM(MID(E4,12,9999)),B3)"
    Range("C4").Resize(LR).Formula = "=IF(ISNUMBER(E4),E4,C5)"
    Range("D4").Resize(LR).Formula = "=IF(LEN(E3)=9,E3,D3)"
    Calculate
    Cells.Copy
    Cells.PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    
    End Sub

    Mas qual é relação disso com os filtros?

    Bom dia Camarada.....

    Deu certo muito obrigado que Deus lhe abençoe.....

    Abraço.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×