Notifications
Clear all

Excluir coluna inteira quando estiver com uma célula vazia?

9 Posts
4 Usuários
0 Reactions
1,516 Visualizações
(@belan_)
Posts: 30
Eminent Member
Topic starter
 

Bom dia Pessoal.
Sou leigo no assunto e estou em busca da aprendizagem.. gostaria de saber como posso excluir a coluna inteira de uma célula que esteja vazia numa planilha?
pensei em utilizar dois for, como se fosse varrer a planilha toda por linha e coluna, mas não funciona.

For i = rows.count to 3 step -1
for j = columns.count to 1 step -1
if cells(i,j) = " " then
cells(i,j).select
Selection.Delete Shift:=xlUp
end if
next j
next i

Tentei aproximar da linguagem C++, só que ta brabo.. alguem pode ajudar?

 
Postado : 03/11/2015 8:24 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Já tentou algo assim.

Sub AleVBA()
On Error Resume Next
Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/11/2015 8:50 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Belan,

Bom dia!

Segue minha sugestão.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 03/11/2015 9:11 am
(@belan_)
Posts: 30
Eminent Member
Topic starter
 

Alexandre, esse comando eu estou utilizando, mas ele excluir as linhas inteiras.. porém eu tenho colunas totalmente em branco.
A planilha foi extraida do sistema da empresa que trabalho, e ao tentar fazer essa limpeza para deixar o Banco de dados melhor, as células que era mescladas ficaram ""desmescladas"", aí que surgiu as colunas totalmente em branco.. já fiz de tudo.

 
Postado : 04/11/2015 6:01 am
(@mprudencio)
Posts: 2749
Famed Member
 

Disponibiliza um arquivo modelo fica mais facil ajudar.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 04/11/2015 7:48 am
(@belan_)
Posts: 30
Eminent Member
Topic starter
 

Wagner! Bom dia.
Muito obrigado por ter enviado seu material. Selecionou meu problema. (Eu achava que poderia montar um código mais simples/menor que o seu, mas não tem jeito)
Unica coisa é que ele demora muito executando, fica piscando até dar o loop todo. Se for uma planilha imensa eu to lascado.
Existe alguma forma de otimizar isso?

Obrigado a todos!!

 
Postado : 04/11/2015 8:01 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Belan,

Bom dia!

Bom... até acredito que deva existir alguma coisa que possa ser otimizada. Todavia, não acredito muito em um grande ganho de performance. Vamos esperar que os nossos amigos "feras" aqui do fórum entrem com suas soluções...

Peço, por gentileza, votar positivamente no tópico

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 04/11/2015 8:07 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Belan, não sei se teremos ganho de performance, mas pode tentar a rotina abaixo, a diferença da a que o colega Wagner indicou, é que na rotina dele estamos verificando linha a linha por colunas, e se for um a Vazio deletamos, e nesta rotina verificamos por Colunas e se na mesma temos qualquer celula em branco, sem efetuar comparações com as demais linhas, mas faça os testes e veja se a performance melhora.

Sub DeletarColunasCellsBlanks()
    Dim UltimaColuna As Long
    Dim xCol As Long
    
    UltimaColuna = Sheets("Plan1").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
        
    For xCol = UltimaColuna To 1 Step -1
        
        With Columns(xCol)
            
        On Error Resume Next
            'Verifica se temos alguma celula em branco na coluna
            CCount = .SpecialCells(xlCellTypeBlanks).Areas(1).Cells.Count
                
            'Se positivo Deletamos a Coluna
            If CCount <> 0 Then
                .SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
            End If
                    
        End With
    
        CCount = Nothing
        
    Next xCol

End Sub

Quanto a questão que citou de piscar a tela, podemos utilizar a instrução "Application.ScreenUpdating = False" para evitar a exibição das açoes enquanto a rotina é executada, ou seja, na rotina do Wagner, adicione esta instrução logo apos :
UltimaColuna = Sheets("Plan3").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
Application.ScreenUpdating = False

e no final da rotina apos o "Next i" adicione novamente, mas revertendo a propriedade para True, descongelando a tela.

Application.ScreenUpdating = True

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/11/2015 12:17 pm
(@belan_)
Posts: 30
Eminent Member
Topic starter
 

Boa tarde Mauro..
Seu codigo me parece bom, usei seu código aqui e acabou excluindo todas as colunas, estou procurando o erro ainda.

Obrigado!!

 
Postado : 05/11/2015 10:34 am