Usuário com melhor resposta
excluir linhas com planilha intercalada

Pergunta
-
Pessoal, eu tenho uma planilha como a imagem a abaixo.Porém ela tem no total mais de 8000 linhas.Eu precisava colocar um "x" na respectiva célula da coluna G para toda linha que for vazia ou que tiver valor somente na coluna A.Até aí eu consigo fazer, o problema é que se eu fizer um "For Each Cell" para toda coluna, a macro vai demorar horas, pois acabará colocando x até a linha limite do Excel 2007 (que é 1048576).
Como percebe-se na imagem, existem linhas em branco durante a tabela (na verdade elas não são intercaladas).Eu precisava inserir um x na col G até a última linha que tiver algo escrito na respectiva célula da coluna A.
Como posso fazer isso?
Respostas
-
Sobre obter a última linha, fiz uma discussão do assunto aqui:
Uma solução para o que deseja pode ser:
Sub Exemplo1() Dim lLast As Long Dim rng As Range With Workbooks("lx09.XLS").Sheets(1) lLast = .Cells(.Rows.Count, "A").End(xlUp).Row For Each rng In .Range("A1:A" & lLast) If IsEmpty(rng) Then rng = "x" End If Next rng End With End Sub
Pessoalmente, prefiro usar a forma abaixo:
Sub Exemplo2() Dim lLast As Long Dim lRow As Long With Workbooks("lx09.XLS").Sheets(1) lLast = .Cells(.Rows.Count, "A").End(xlUp).Row For lRow = 1 To lLast If IsEmpty(.Cells(lRow, "A")) Then .Cells(lRow, "A") = "x" End If Next lRow End With End Sub
Para esse caso particular, você poderia usar:
Sub Exemplo3() Workbooks("lx09.XLS").Sheets(1).UsedRange.SpecialCells(xlCellTypeBlanks) = "x" End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Hezequias VasconcelosModerator terça-feira, 11 de setembro de 2012 15:50
- Marcado como Resposta Hezequias VasconcelosModerator quarta-feira, 12 de setembro de 2012 11:13
Todas as Respostas
-
-
Meu código é esse abaixo.O problema é que ele acaba lendo até a linha 1048576.Eu queria o comando que lesse (até a última linha escrita da coluna A).
For Each Celula_nd In Workbooks("lx09.XLS").Sheets(1).Range("A:A")
If Celula_nd = "" Then
Celula_nd.Value = "x"
End If
Next Celula_nd
Eu qeuria fazer algo do tipo
For Each Celula_nd In Workbooks("lx09.XLS").Sheets(1).Range("A:A" & lastRow)
If Celula_nd = "" Then
Celula_nd.Value = "x"
End If
Next Celula_ndPorém não funciona...
- Editado dmfmakko segunda-feira, 16 de julho de 2012 10:50
-
Sobre obter a última linha, fiz uma discussão do assunto aqui:
Uma solução para o que deseja pode ser:
Sub Exemplo1() Dim lLast As Long Dim rng As Range With Workbooks("lx09.XLS").Sheets(1) lLast = .Cells(.Rows.Count, "A").End(xlUp).Row For Each rng In .Range("A1:A" & lLast) If IsEmpty(rng) Then rng = "x" End If Next rng End With End Sub
Pessoalmente, prefiro usar a forma abaixo:
Sub Exemplo2() Dim lLast As Long Dim lRow As Long With Workbooks("lx09.XLS").Sheets(1) lLast = .Cells(.Rows.Count, "A").End(xlUp).Row For lRow = 1 To lLast If IsEmpty(.Cells(lRow, "A")) Then .Cells(lRow, "A") = "x" End If Next lRow End With End Sub
Para esse caso particular, você poderia usar:
Sub Exemplo3() Workbooks("lx09.XLS").Sheets(1).UsedRange.SpecialCells(xlCellTypeBlanks) = "x" End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Hezequias VasconcelosModerator terça-feira, 11 de setembro de 2012 15:50
- Marcado como Resposta Hezequias VasconcelosModerator quarta-feira, 12 de setembro de 2012 11:13