Logo Hardware.com.br
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas

Excel - VBA - Limpar Conteúdo

#1 Por NayraJH 13/05/2016 - 09:38
Boa tarde,

Gostaria que toda vez que aparecer na minha planilha na Coluna G a data: 30/12/1899 que na célula onde aparecesse esse conteúdo, o mesmo fosse limpado.
Obs: não quero excluir a linha.
Por exemplo, na celula G207 apareceu essa data, quero que imediatamente ela apagasse e ficasse vazia mas a linha não fosse excluída e sim que continuasse com as outras informações.

Obrigada!
Responder
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas
#3 Por NayraJH
13/05/2016 - 19:01
Na coluna (G), as data aparecem para mim dessa forma: 11.02.2016. Então eu converto tudo o que possui . para / nessa coluna dessa forma:

'trocando os "." das datas SAP para "/"
Columns("G:G").Select
Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Em seguida as datas se inverteram...o mês passou pro lugar do dia e o dia pro mês. ..aí usei esse comando:

'Invertendo a posição do mês com o dia que foi invertido no código anterior

Range("G2:G3000").Select
Range(Selection, Selection.End(xlDown)).Select
For Each cell In Selection
cell.Value = Day(cell.Value) & "/" & Month(cell.Value) & "/" & Year(cell.Value)
Next cell

em seguida essa data 30/12/1899 aparecem em alguns lugares da planilha pra mim na mesma coluna, por isso preciso que seja limpado onde elas aparecem...Pode ser em seguida desse comando.
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas
#5 Por NayraJH
13/05/2016 - 20:49
Boa noite,

É como eu disse logo acima, essas datas so aparecem apos as macros que mostrei serem executadas. Antes disso a data 30/12/1899 não aparece. So as datas do proprio arquivo mesmo. O que preciso e somente uma macro que apague essa data depois que eu mandei executar as anteriores. Estou dizendo isso pq vc pediu o arquivo com os dados brutos, logo nao sei se adiantaria, pq nenhuma data com esse modelo aparece.
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas
#7 Por NayraJH
13/05/2016 - 20:58
De qualquer forma estou disponibilizando o arquivo que estou precisando editar. Abaixo vou mandar as macros que estou executando para que ela fique do jeito que eu quero. Como ja falado, a data que preciso limpar o conteudo na ceulua, ou seja, 30/12/1899, so apareco depois que executo todas.
[code=vb]
Sub org()

'importando a plan1 dados do SAP zpp513 (2)

Workbooks.Open("D:\Profiles\s-haeska.campos\Desktop\Giliard") _
.Worksheets("Base").Copy Before:=Workbooks("Executando.xlsm") _
.Sheets(1)
Workbooks("Base.xls").Activate
ActiveWorkbook.Close False

' Organizando Planilha

Columns("A:V").Select
Columns("A:V").EntireColumn.AutoFit
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
Range("L2").Select
Selection.Cut
Range("L3").Select
ActiveSheet.Paste
Range("K2").Select
Selection.Cut
Range("K3").Select
ActiveSheet.Paste
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
Range("E2").Select
Selection.Cut
Range("E3").Select
ActiveSheet.Paste
Range("B2").Select
Selection.EntireRow.Delete
Range("B1").Select
Selection.EntireRow.Delete
Range("L9").Select
ActiveWindow.SmallScroll Down:=-15
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("A2").Select
Selection.EntireRow.Delete
Range("E11").Select
ActiveWindow.SmallScroll Down:=-9
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Range("D11").Select

'trocando os "." das datas SAP para "/"
Columns("G:G").Select
Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

'Invertendo a posição do mês com o dia que foi invertido no código anterior

Range("G2:G3000").Select
Range(Selection, Selection.End(xlDown)).Select
For Each cell In Selection
cell.Value = Day(cell.Value) & "/" & Month(cell.Value) & "/" & Year(cell.Value)
Next cell

' Continuar Organizar

Columns("G:G").EntireColumn.AutoFit
Range("A1:T2").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("G2").Select
Selection.ClearContents
End Sub
[/code]

Anexos

osvaldomp
osvaldomp Geek Registrado
753 Mensagens 558 Curtidas
#9 Por osvaldomp
13/05/2016 - 22:46
Eu pedi o seu arquivo bruto pois suspeitei que você estaria utilizando gambiarras, o que se confirmou.bom_trabalho.gif
No seu arquivo há textos no formato dd.mm.aaaa que você quer mudar para dd/mm/aaaa.

Este trecho inadequado do seu código muda para mm/dd/aaaa que ainda não é o formato desejado. foi_ruim.gif
'trocando os "." das datas SAP para "/"
Columns("G:G").Select
Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


Aí este outro trecho gambiarra muda para dd/mm/aaaa só que ele insere a data 30/12/1899 nas células vazias da coluna. foi_ruim.gif
'Invertendo a posição do mês com o dia que foi invertido no código anterior
Range("G2:G3000").Select
Range(Selection, Selection.End(xlDown)).Select
For Each cell In Selection
cell.Value = Day(cell.Value) & "/" & Month(cell.Value) & "/" & Year(cell.Value)
Next cell


Agora você quer um terceiro código pra apagar 30/12/1899. hein.pngfiquei_vermelho.png

Sugestão - para mudar o texto dd.mm.aaaa na data dd/mm/aaaa teste o código abaixo no seu arquivo bruto. Se o resultado for o esperado você tem dois caminhos:
1. mantenha o código abaixo no módulo e, no seu código original, coloque o nome dele no lugar dos dois trechos que citei acima (coloque DataComBarras), ou
2. substitua os dois trechos que citei acima pelo corpo do código abaixo (sem o nome e sem o End Sub).
Sub DataComBarras()
Columns("G:G&quot.TextToColumns Destination:=Range("G1&quot, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True
End Sub


obs. no seu post e também no seu código a coluna com "datas" é a coluna 'G', que mantive no código acima, no entanto, no exemplo que você disponibilizou as "datas" estão na coluna 'H', verifique antes de rodar o código.
Osvaldo
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas
#10 Por NayraJH
14/05/2016 - 13:29
Eu conferi e deu certinho sim, muito obrigada.
Eu conferi e é na G mesmo... é pq depois que organizo ela de acordo com os comandos acima ela vai pra G mesmo ao inves da H.
Infelizmente tenho que viver fazendo minhas macros de acordo com o que o pessoal me ajuda, pq entendo muito pouco e uso demais, so agora que estou começando a entender, ai infelizmente uso essas "gambiarras" que muitas vezes salvam mas muitas da problema igual a essa data. Mas obg por me ajudar. Ficou otimo. Nao tive mais problemas! OBG
Ainda tenho muita coisa pela frente pra terminar ela...se vc quiser continuar ajudando...
Agora preciso excluir na coluna H (considerando a planilha ja organizada, por isso é a H mesmo) todas as linhas que nessa coluna os numeros apareçam com o valor negativo e também a que aparece *Total (A - sempre é a ultima linha) e tudo que está abaixo dela.
Estou fazendo assim:

'Retirando linhas desnecessárias da planilha com as informações ("*Total" e "-:")
Call Excluir_Negativo

Call Excluir_Total


Sub Excluir_Negativo()

' Excluir Inativos

Range("I1:I65000").Select

Dim w As Range
Dim faixa As Range

Set faixa = Selection
Dim criterio As String
criterio = "-"
For Each w In faixa
If InStr(1, w.Value2, criterio) <> 0 Then
w.Activate
ActiveCell.EntireRow.Delete
Call Excluir_Negativo
Exit Sub
End If
Next
Range("I1").Select
End Sub

Sub Excluir_Total()

' Excluir Inativos

Range("A1:A65000").Select

Dim w As Range
Dim faixa As Range

Set faixa = Selection
Dim criterio As String
criterio = "*Total"
For Each w In faixa
If InStr(1, w.Value2, criterio) <> 0 Then
w.Activate
ActiveCell.EntireRow.Delete
Call Excluir_Total
Exit Sub
End If
Next
Range("A1").Select

So para conhecimento, desde inicio fica assim:

Sub org()

'importando a plan1 dados do SAP zpp513 (2)

Workbooks.Open("D:\Profiles\s-haeska.campos\Desktop\Giliard") _
.Worksheets("Base").Copy Before:=Workbooks("Executando.xlsm") _
.Sheets(1)
Workbooks("Base.xls").Activate
ActiveWorkbook.Close False

' Organizando Planilha

Columns("A:V").Select
Columns("A:V").EntireColumn.AutoFit
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
Range("L2").Select
Selection.Cut
Range("L3").Select
ActiveSheet.Paste
Range("K2").Select
Selection.Cut
Range("K3").Select
ActiveSheet.Paste
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
Range("E2").Select
Selection.Cut
Range("E3").Select
ActiveSheet.Paste
Range("B2").Select
Selection.EntireRow.Delete
Range("B1").Select
Selection.EntireRow.Delete
Range("L9").Select
ActiveWindow.SmallScroll Down:=-15
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("A2").Select
Selection.EntireRow.Delete
Range("E11").Select
ActiveWindow.SmallScroll Down:=-9
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Range("D11").Select

'trocando os "." das datas SAP para "/"

Columns("G:G").TextToColumns Destination:=Range("G1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True

' Continuar Organizar

Columns("G:G").EntireColumn.AutoFit
Range("A1:T2").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("G2").Select
Selection.ClearContents
End Sub

'Retirando linhas desnecessárias da planilha com as informações ("*Total" e "-:")
Call Excluir_Negativo

Call Excluir_Total


Sub Excluir_Negativo()

' Excluir Inativos

Range("I1:I65000").Select

Dim w As Range
Dim faixa As Range

Set faixa = Selection
Dim criterio As String
criterio = "-"
For Each w In faixa
If InStr(1, w.Value2, criterio) <> 0 Then
w.Activate
ActiveCell.EntireRow.Delete
Call Excluir_Negativo
Exit Sub
End If
Next
Range("I1").Select
End Sub

Sub Excluir_Total()

' Excluir Inativos

Range("A1:A65000").Select

Dim w As Range
Dim faixa As Range

Set faixa = Selection
Dim criterio As String
criterio = "*Total"
For Each w In faixa
If InStr(1, w.Value2, criterio) <> 0 Then
w.Activate
ActiveCell.EntireRow.Delete
Call Excluir_Total
Exit Sub
End If
Next
Range("A1").Select
osvaldomp
osvaldomp Geek Registrado
753 Mensagens 558 Curtidas
#11 Por osvaldomp
15/05/2016 - 15:52
Coloque aqui todos os códigos completos que você passou a utilizar no arquivo bruto.
Coloque tags nos códigos e mantenha-os separados.
Para colocar tags:
1. copie o código do seu arquivo, clique na área destinada à resposta
2. clique no sinal de + no menu da resposta e escolha "Código"
3. cole o código na janela azul, Inserir
Faça isso separadamente para cada código.

após os procedimentos acima o código irá aparecer assim, como está no seu post #7 acima
Osvaldo
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas
#12 Por NayraJH
16/05/2016 - 10:00
Bom dia,

Segue as macros como estou fazendo para conseguir o resultado. Copiei e colei separado como vc pediu. Uso na sequencia que enviei.
Como eu disse preciso que na coluna H (considerando a planilha ja organizada, por isso é a H mesmo) todas as linhas que nessa coluna os números apareçam com o valor negativo (essa macro que fiz faz isso mas não sei se é a melhor maneira).
Também preciso excluir a linha que aparece *Total (Coluna A - sempre aparece na ultima linha) e tudo que está abaixo dela (ainda não consegui uma que faça isso).

Sub Org()

'Importando dados

Workbooks.Open("\\vsboffice\AAL\Documentacao_administrativa\AAL1\Gestão de Estoque\Dados\Base.xls&quot _
.Worksheets("Base&quot.Copy Before:=Workbooks("Executando.xlsm&quot _
.Sheets(1)
Workbooks("Base.xls&quot.Activate
ActiveWorkbook.Close False


' Organizando Planilha

Columns("A:V&quot.Select
Columns("A:V&quot.EntireColumn.AutoFit
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
Range("L2&quot.Select
Selection.Cut
Range("L3&quot.Select
ActiveSheet.Paste
Range("K2&quot.Select
Selection.Cut
Range("K3&quot.Select
ActiveSheet.Paste
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
Range("E2&quot.Select
Selection.Cut
Range("E3&quot.Select
ActiveSheet.Paste
Range("B2&quot.Select
Selection.EntireRow.Delete
Range("B1&quot.Select
Selection.EntireRow.Delete
Range("L9&quot.Select
ActiveWindow.SmallScroll Down:=-15
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("A2&quot.Select
Selection.EntireRow.Delete
Range("E11&quot.Select
ActiveWindow.SmallScroll Down:=-9
Columns("A:A&quot.Select
Selection.Delete Shift:=xlToLeft
Range("D11&quot.Select

 'Trocando os "." das datas para "/"
Columns("G:G&quot.TextToColumns Destination:=Range("G1&quot, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True


 ' Continuar Organizar

Columns("G:G&quot.EntireColumn.AutoFit
Range("A1:T2&quot.Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("G2&quot.Select
Selection.ClearContents


For i = Cells(Rows.Count, 9).End(xlUp).Row To 3 Step -1
If Cells(i, 9).Value <= -1 Then
Cells(i, 9).EntireRow.Delete
End If
Next

'Apagando a linha em que a coluna A a primeira celula aparece vazia

Columns("A:A&quot.Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete



'Deletando a planilha Base (2)
Sheets("Base (2)&quot.Select
ActiveWindow.SelectedSheets.Delete

End Sub
osvaldomp
osvaldomp Geek Registrado
753 Mensagens 558 Curtidas
#13 Por osvaldomp
16/05/2016 - 11:40
Dúvidas:
1. o arquivo do post #7 é o arquivo bruto com o qual você trabalha? Se sim, há divergência pois o último comando do código que postou acima exclui a planilha de nome "Base (2)" e no referido arquivo existe somente uma planilha, e o nome dela é "Base (4)" hein.png
2. não vi no código que você postou acima as chamadas para as macros Excluir_Negativo e Excluir_Total que você citou no post #10. Você está ou não utilizando essas macros ?
Osvaldo
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas
#14 Por NayraJH
16/05/2016 - 13:23
Então, essa planilha acima é o arquivo bruto que vc pediu pra te mandar. Esse arquivo fica salvo em uma pasta chamada Dados com o nome de Base. Nessa Base nada mexo nela. Pq todos os dias eu tiro essa Base de um programa que uso e substituo para fazer minhas atualizações.
Eu criei um outro arquivo que chamo de Executando e exporto essa Base para ele como mostrado na primeira Macro. Essa Base (2) é uma aba que se abre quando executo essas macros e que quando termino a atualização eu a excluo porque não preciso mais utilizar. Não sei se consegui ser clara o suficiente...
Desculpe eu esqueci de explicar. Eu uso essa duas macros acima que chamei de Excluir_Negativo e Excluir_Total só que esta travando e sendo lenta e agora consegui fazer hoje essa (irei colocar aqui novamente), só que não sei qual das duas é melhor usar. Na verdade essa que coloquei hoje só exclui os negativos e não exclui *Total como também preciso. As duas estão demorando um pouco pra executar, talvez você com seu conhecimento tenha uma melhor sugestão.

For i = Cells(Rows.Count, 9).End(xlUp).Row To 3 Step -1
If Cells(i, 9).Value <= -1 Then
Cells(i, 9).EntireRow.Delete
End If
osvaldomp
osvaldomp Geek Registrado
753 Mensagens 558 Curtidas
#15 Por osvaldomp
16/05/2016 - 18:57
Testaí ... com um extintor de incêndio ao lado do PC...fiquei_vermelho.png
No seu arquivo com cerca de 45.000 linhas executa em aprox. 30 seg na minha máquina.
80 a 90% do tempo de execução é para excluir as linhas com valores negativos em 'I', cerca de 17.000 linhas

Sub Org()

'importa dados
Workbooks.Open("\\vsboffice\AAL\Documentacao_administrativa\AAL1\Gestão de Estoque\Dados\Base.xls&quot _
.Worksheets("Base&quot.Copy Before:=Workbooks("Executando.xlsm&quot.Sheets(1)
Workbooks("Base.xls&quot.Activate
ActiveWorkbook.Close False

'organiza a planilha ativa; exclui as linhas 1,2 e 4 e a coluna 'A'
[L3] = [L2]: [K3] = [K2]: [E3] = [E2] ': [G2] = ""
Union(Rows("1:2&quot, Rows(4)).Delete: Columns(1).Delete

'muda textos com formato dd.mm.aaa para data dd/mm/aaaa na coluna 'G'
Columns("G:G&quot.TextToColumns Destination:=Range("G1&quot, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True

'exclui as linhas cujas células estejam vazias na coluna 'A'; limpa o conteúdo *Total na coluna 'A'
Columns("A:A&quot.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Cells(Rows.Count, 1).End(3) = ""

'exclui as linhas com valores negativos na coluna 'I'
With ActiveSheet
.Range("A1:T1&quot.AutoFilter Field:=9, Criteria1:="<0"
.Range("A3:T" & .Cells(Rows.Count, 1).End(3).Row).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilterMode = False
End With

'ajusta a largura das colunas, centraliza conteúdos
With Columns("A:T&quot
.AutoFit
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With

'deleta a planilha Base (2)
Application.DisplayAlerts = False
Sheets("Base (2)&quot.Delete
Application.DisplayAlerts = True

End Sub
Osvaldo
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal