#excel #string #powershell #filtering
#excel #строка #powershell #фильтрация
Вопрос:
Итак, все, что я хочу сделать, это импортировать файл Excel, содержащий количество покупок, и выбрать все строки со словами «walmart», «mcdonalds» и «burger king» в нем. Затем экспортируйте результат обратно в файл Excel. Я установил модуль Excel. Я перепробовал огромное количество вещей, но обычно я получаю только jibberish в файле экспорта.
В моем файле Excel есть 4 столбца, столбец «имя» — столбец B. Но столбцы не имеют имен, первая строка — это первая покупка.
Пожалуйста, помогите, спасибо.
РЕДАКТИРОВАТЬ: вот пример (точка с запятой означает следующую ячейку):
- ; 1 февраля 2021 года ; купил товары у blabla; -25 $ ; 400 $ (<—total)
- ; 5 февраля 2021 ; покупка в MCDONALDS; -10 $ ; 390 $
- ; 7 февраля 2021 ; покупка у случайной компании; -30 $ ; 360 $
- ; 7 февраля 2021 ; покупка у компании X; -15 $ ; 345 $
- ; 9 февраля 2021 ; покупка у BURGERKING; -7 $ ; 338 $
Я хочу избавиться от каждой строки / строки, не содержащей нужных мне слов, например, mcdonalds и burger king, и экспортировать результат в другой файл Excel, чтобы я мог найти сумму этих покупок.
Я понятия не имею, что делать дальше, это моя 4-я неделя изучения powershell, я пробовал что-то вроде
(import-excel "C:purchases.xlsx") | select-string ".*chinese*.",
".*burgerking*.", ".*mcdonalds*." | export-excel "C:outfile.xlsx"
но это явно неверно.
Я попробую кое-что из того, о чем упоминал пользователь19702, спасибо за помощь.
Редактировать 2: это сработало для фильтрации файла в powershell, но экспорт файла не работает, выходной файл пуст. Вот код и вывод:
PS C:WindowsSystem32> $purchase = Import-Excel
"C:UserssondeDesktoppersonlig-prosjekterpengebrukvisakort-3mnd.xlsx" -
NoHeader | % { if($_ -match "visa") {write-host $_}}
@{P1=02.02.2021 00:00:00; P2=VISA VARE XXXXXXXXXX 01.02 0,00
GOOGLE*YOUTUBE SUPERINTERNET Kurs; P3=-50; P4=5725,16; P5=; P6=; P7=}
@{P1=02.02.2021 00:00:00; P2=VISA VARE XXXXXXXXXXX 01.02 0,00 GOOGLE
*YouTube Superg.co/helppay# Kurs; P3=-100; P4=10360,93; P5=; P6=; P7=}
@{P1=01.02.2021 00:00:00; P2=VISA VARE XXXXXXXXX 30.01 0,00 GOOGLE
*Google Play Apg.co/helppay Kurs; P3=-29; P4=10460,93; P5=; P6=; P7=}
Комментарии:
1. Пожалуйста, покажите свой код и, в лучшем случае, несколько очищенных строк примеров данных, чтобы мы могли воспроизвести вашу ситуацию. Имейте в виду, что мы не можем видеть ваш экран, и мы не можем читать ваши мысли. 😉 (Если вы отправляете код или образец данных, отформатируйте их как код, пожалуйста.)
Ответ №1:
Я предполагаю:
mcdonalds
burger king
, и т.д. находятся в первом столбце- что существует только один рабочий лист
- что нет таблиц
- что весь рабочий лист — это ваши покупки
- ваши (пустые) имена столбцов находятся в строке # 1
Тогда это должно работать нормально:
Import-Module importExcel
Import-Excel "C:pathtopurchases.xlsx" -NoHeader -StartRow 2 |
where P1 -in ('mcdonalds','burger king','walmart') |
Export-Excel "C:pathtopurchases-filtered.xlsx" -StartRow 2 -NoHeader
-NoHeader
указываетImport-Excel
создать собственные имена столбцов: P1, P2, P3 и т.д.-StartRow
указывает, сколько строк сверху пропустить при чтении или записи.
Примечание: если вы добавите имена столбцов для других столбцов, манипулировать данными будет намного проще