Мені доводиться видаляти великі куски інформації з таблиць у файлах .xlsx за допомогою Excel 2010. Кожен, який я намагався до цього часу, не дав жодних результатів, або зазнав аварії, або я вбив її, очікуючи день.
Хтось ще створив електронні таблиці за допомогою SQL-сервера. Я маю проаналізувати дані, але для цього я повинен видалити всі погані дані, а потім візуалізувати їх. Я попросив хлопця-сервера фільтрувати його кінець, але він каже, що тільки одна людина в компанії компетентна це робити, і вони занадто зайняті. Я не можу це коментувати, бо нічого не знаю про бази даних.
У типовій електронній таблиці є приблизно ~ 500 000 записів. Я спробував видалити всі погані значення вручну за допомогою фільтра, але мій ПК виходить з ладу, коли я видаляю погані записи.
Я перетворив .xlsx-файли у .csv-файли, тому що думаю, що вони простіші, і хоча вони здаються швидшими, вони все одно виходять з ладу.
Я написав сценарій VBA, який я намагався кілька днів безрезультатно працювати:
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
Я також написав. Загальний формат:
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"
Import-CSV c:\Path\To\File.csv | ?{$arrayOfIlters -notContains $_.ColumnHeader} | Export-CSV c:\path\To\NewFile.csv -NoTypeInformation
$arrayOfFilters = Get-Gontent c:\path\to\filters.txt