фильтровать и удалять строки в Excel, используя powershell - PullRequest
0 голосов
/ 25 октября 2018

Я все еще очень плохо знаком с powershell и чувствую, что это может быть простой вопрос, но я застрял в своей программе, пытаясь отфильтровать таблицу Excel и затем удалить отфильтрованные строки.

в идеале я хотел бы отфильтровать все строки, в которых НЕ указано «НЕТ ДАННЫХ» в столбце А, начиная с 3-й строки. Как только у меня появятся все эти строки, я хотел бы удалить их все.Затем верните все строки, которые имеют «NO DATA»

. Я не могу понять, как написать сценарий, чтобы фильтр начинался со строки 2, и как фильтровать все строки, которые НЕ говорят«НЕТ ДАННЫХ»

$worksheet.usedrange.autofilter(1, -ne "NO DATA", 3)
$worksheet.usedrange.offset(1,0).specialcells(12).Entirerow.Delete() 
$worksheet.ShowAllData()

, когда я пытаюсь сделать то, что мне кажется логичным, я получаю 2 ошибки, одна - «отсутствует выражение» после «,» перед -не, а другая «не может получитьСвойство автофильтрации класса диапазона ", ссылающееся на часть (Column #, Text, Row #).

$worksheet.usedrange.autofilter(1, "NO DATA", 2)
$worksheet.usedrange.offset(1,0).specialcells(12).Entirerow.Delete() 
$worksheet.ShowAllData()

Этот код работает, но дает мне неверный набор данных (у меня осталось все, что я хотел удалить, и он по-прежнему отфильтровывается из строки 1, а не из строки 2.

любая помощьбыло бы здорово.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

удалось найти решение, на самом деле все оказалось так же просто, как я ожидал: /

$SubCon_Vs_NOA.range("A2").autofilter(1,"<>NO DATA")
$SubCon_Vs_NOA.range("A3:A$rows").Entirerow.Delete() 
$SubCon_Vs_NOA.ShowAllData()
0 голосов
/ 25 октября 2018

Если я правильно понимаю, вы ищете это:

$StartRow = 3
$RowCnt = $worksheet.UsedRange.Rows.Count
$worksheet.Range("A$($StartRow):A$($RowCnt)").AutoFilter(1,"<>NO DATA")
$worksheet.usedrange.offset($StartRow,0).specialcells(12).Entirerow.Delete() 
$worksheet.ShowAllData()
...