Eu tenho que remover grandes pedaços de informação das tabelas em arquivos .xlsx usando o Excel 2010. Todos os métodos que tentei até agora não produziram resultados, falharam ou eu os matei depois de esperar por um dia.
Alguém criou as planilhas usando um servidor SQL. Eu tenho que analisar os dados, mas para fazer isso eu tenho que remover todos os dados ruins e depois visualizá-los. Eu pedi o cara servidor para filtrar em sua extremidade, mas ele diz que apenas uma pessoa na empresa é competente para fazer isso e eles estão muito ocupados. Não posso comentar isso porque não sei nada sobre bancos de dados.
Existem aproximadamente ~ 500.000 registros na planilha típica. Eu tentei remover todos os valores ruins manualmente usando um filtro, mas meu PC trava quando eu apago os registros ruins.
Eu transformei os arquivos .xlsx em arquivos .csv porque acho que eles são mais simples e, embora pareçam mais rápidos, eles ainda travam.
Eu escrevi um script VBA, que tentei deixar em execução por vários dias sem sucesso:
Sub delete_bad_records()
Dim not_good() As Variant
Dim cell As Excel.range
Dim none As Boolean
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
not_good = Array("example_value", "another one")
none = False
Columns("C:C").Select
For Each element In not_good
none = False
Do While Not none
Set cell = Selection.Find(element, ActiveCell)
If cell Is Nothing Then
none = True
Else
cell.Rows().Delete
End If
Loop
Next element
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
E eu também escrevi um arquivo .bat usando o findstr como um tipo de filtro, mas alguns registros misteriosamente desaparecem e não sei por quê. O formato geral é:
findstr /v "keywords" "original.csv" > "filtered1.csv"
findstr /v /l "specific phrase1" "filtered1.csv" > "filtered2.csv"
findstr /v /l "specific phrase2" "filtered2.csv" > "filtered1.csv"