Notifications
Clear all

Filtrar linhas e colunas que tenho números maiores que zero

8 Posts
2 Usuários
0 Reactions
2,116 Visualizações
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

.
Boa noite, meu caros!!
.
Esta planilha é minha salvação no trabalho!!
.
Na tentativa de deixá-la mais dinâmica, estou tentando fazer um filtro por fórmula, mas tá difícil!!
.
As fórmulas levam os valores, mas não levam as formatações, aí as colunas, que se alteram de posição (no filtro) o tempo todo, ficam uma zona!!
.
O objetivo é:
Copiar A7:Z384 e colar (valores e formatos) em AU7 ... mas SOMENTE das linhas (que tem números na coluna X) e as colunas (que tem números maiores que zero na linha 1)
.
PS: o ideal seria aquele Código que tem os ranger, assim se inserir/excluir uma coluna seria fácil alterar o código!!
.
Fiz uma limpa no arquivo de 8 Abas, e esta é a Planilha original que preciso do filtro .... https://www.sendspace.com/file/a5m1c1
.

 
Postado : 06/12/2019 8:22 pm
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

.
Affff!! ... wagner, editei e tirei a senha!!!
.

 
Postado : 07/12/2019 8:21 am
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

.
wagner, respondido lá!! ... Vou aguardar outras opiniões aqui !!!
.

 
Postado : 07/12/2019 10:46 am
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

.
wagner, com os dados que vc incluiu no início da planilha (ocupando TODAS AS COLUNAS) talvez tenha funcionado aí ... mas aqui, ao excluir seus dados, e deixando a plan só os dados originais que postei, não funcionou!!
.
PS: a macro para copiar A7:Z384 e colar VALORES E FORMATOS em AU7 eu já tenho ... o problema é que cada colagem (umas 6x ao dia) tenho que ficar excluindo as colunas sem dados, e depois as linhas sem dados desse intervalo na mão!!! ... A intenção aqui é encontrar uma macro que me poupe esse trabalhão depois de colar VALORES E FORMATOS, ou seja, que ao copiar ignorasse coluna e linhas sem dados!!!!!!!!!!!!
.
editando ...
.
Para simplificar vejam o mesmo arquivo inicial com um novo exemplo ... https://www.sendspace.com/file/xqzo5y
.

 
Postado : 07/12/2019 8:46 pm
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

.
wagner, deixa quieto por enquanto ... acho que vou conseguir fazer a bagaça com fórmulas, faltam só uns pequenos detalhes mas estou chegando lá ............. depois volto para dizer se deu certo!!
.

 
Postado : 08/12/2019 9:44 am
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

.
wagner, deu não ... cada vez que se inclui ou exclui dados de uma coluna na base, a colagem faz uma baguncinha lá depois da coluna AU!!
.
PS: que código gigante, em?! k ... E está demorando quase 1 minuto para rodar, talvez por causa desses comandos desnecessários: armazena hora de início, hora de fim, tempo total gasto etc etc !!
.
Deixa quieto por enquanto!!! ... Acho que com fórmula vai funcionar, falta pequenos detalhes que vou corrigir mais tarde!! ... Valeu!!!

 
Postado : 08/12/2019 12:31 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa tarde, amigos JSCOPA e Wagner!

Achei interessante esse seu problema e percebi que é um problema corriqueiro e portanto poderia ser bem útil fazer um código para condensar tabelas com linhas e colunas desnecessárias. Dá uma testada no código que fiz abaixo para irmos refinando se necessário...
Obs.:

  • O código também copia da primeira tabela e cola valores e formatos. Então o código que vc já usa não seria mais necessário.[/*:m:v5gxzgz1]
  • O conceito que usei não foi o de excluir colunas e linhas mas de unir ranges em que haja pelo menos um valor em cada linha/coluna (CONTAR.VAZIO) e depois copiá-los/colá-los no destino.[/*:m:v5gxzgz1][/list:u:v5gxzgz1]
  • Sub EnxugaDados()
      Dim rgDados As Range, rgTít As Range, rgÚtil As Range, rgDestino As Range
      Dim L As Range, rgL As Range, C As Range, rgC As Range
      With Worksheets("servidorX")
        Set rgDados = .Range("A7:Z384").Offset(1, 1)
        Set rgDados = rgDados.Resize(rgDados.Rows.Count - 1, rgDados.Columns.Count - 1)
        Set rgDestino = .Range("AU7:BR384")
      End With
      With Application.WorksheetFunction
        For Each L In rgDados.Rows
           If .CountBlank(L) < L.Columns.Count Then
            If Not rgL Is Nothing Then Set rgL = Union(rgL, L) Else Set rgL = L
            If Not rgTít Is Nothing Then Set rgTít = Union(rgTít, L.Cells(1).Offset(0, -1)) Else Set rgTít = L.Cells(1).Offset(0, -1)
          End If
        Next L
        For Each C In rgDados.Columns
          If .CountBlank(C) < C.Rows.Count Then
            If Not rgC Is Nothing Then Set rgC = Union(rgC, C) Else Set rgC = C
            If Not rgTít Is Nothing Then Set rgTít = Union(rgTít, C.Cells(1).Offset(-1, 0)) Else Set rgTít = C.Cells(1).Offset(-1, 0)
          End If
        Next C
      End With
      If (rgL Is Nothing) Or (rgC Is Nothing) Then Exit Sub
      Set rgÚtil = Union(rgTít, rgDados.Cells(1, 1).Offset(-1, -1), Intersect(rgL, rgC))
      With rgDestino
        .Clear
         rgÚtil.Copy
        .Cells(1).PasteSpecial xlPasteValues
        .Cells(1).PasteSpecial xlPasteFormats
      End With
      Application.CutCopyMode = False
        Set rgDados = Nothing:  Set rgTít = Nothing
        Set rgÚtil = Nothing:   Set rgDestino = Nothing
        Set L = Nothing:        Set rgL = Nothing
        Set C = Nothing:        Set rgC = Nothing
    End Sub
    

     
Postado : 09/12/2019 12:22 pm
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

.
EdsonBR, estou fazendo uns testes aqui ... até agora SHOW !!! ... Depois volto ...
.
Editando .......................
.
EdsonBR, PERFEITO!!! ... Mais uma vez, Obrigado !!!!!!!!!!!!!!!!!!!!!!!!!
.

 
Postado : 09/12/2019 12:43 pm