Як очистити ~ 500 000 записів у програмі Excel 2010, не збиваючи ПК?


3

Мені доводиться видаляти великі куски інформації з таблиць у файлах .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"

Якщо ви дійсно можете добре завантажити файл в Excel, збережіть його як .csv, а потім відкрийте .csv файл у чомусь на зразок Notepad ++
LPChip

1
Особисто я би використовував Powershell на CSV. Щось на кшталтImport-CSV c:\Path\To\File.csv | ?{$arrayOfIlters -notContains $_.ColumnHeader} | Export-CSV c:\path\To\NewFile.csv -NoTypeInformation
EBGreen

Це робоча машина, і було б дуже складно встановити іншу програму, як Notepad ++. Що б ви запропонували зробити, як тільки я відкрию його в «Блокноті ++»?
scc268

Надіюсь, Пауершелл вже на цьому. :)
EBGreen

1
@ scc268 - Ви можете використовувати текстовий файл, щоб перелічити значення фільтрів, а потім зробити щось на кшталт$arrayOfFilters = Get-Gontent c:\path\to\filters.txt
EBGreen

Відповіді:


2

Завдяки @EBGreen, що запропонував PowerShell та показав мені, як ним користуватися; хоча зараз це здається простим, я б ніколи не знав / не думав про те, щоб використовувати PowerShell самостійно!

Ось що я зробив:

  1. Створіть .csvфайл
  2. Додати фільтр в Excel, і видалити всі записи з типом я дійсно хочу
  3. Скопіюйте відфільтрований список записів із типами, які я не хочу, а потім видаліть дублікати
  4. Збережіть це в not_good.txt
  5. Запустіть цей сценарій PowerShell:

    $not_good = Get-Content .\not_good.txt
    Import-CSV ".\results.csv"  | ?{$not_good -notContains $_.Type} | Export-CSV ".\results filtered.csv" -NoTypeInformation

Сценарій займає секунди, і я можу використовувати його для всіх інших електронних таблиць.


1

Якщо ви хочете завантажити багато даних у Excel, використовуйте електроінструменти Get & Transform від Microsoft . (Для Excel 2010-2013 використовуйте безкоштовний MS-надбудова Power Query для Excel .)

За допомогою цього інструменту у вас є можливість отримати доступ до багатьох різних джерел (CSV, файли Excel, база даних, веб, ...) без необхідності писати код. Також трансформувати ваші дані або поєднувати їх з іншими джерелами досить просто.


Будьте привітні за те, що я повідомив про ці інструменти Я не знав, що вони існують.
scc268

Ласкаво просимо. Ці досить останні інструменти Excel (Power Query, Power Pivot) безумовно переведуть вас на наступний рівень як енергокористувача.
visu-l
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.