使用 powershell 过滤和删除 excel 中的行

filter for and delete rows in excel using powershell

我对 powershell 还是很陌生,觉得这可能是一个简单的问题,但我在尝试过滤我的 excel 电子表格,然后删除过滤后的行的过程中卡住了。

理想情况下,我想过滤掉 A 列中从第 3 行开始不说 "NO DATA" 的所有行。 一旦我拥有所有这些行,我想将它们全部删除。 然后带回所有具有 "NO DATA"

的行

我想不通的是如何编写脚本以便过滤器从第 2 行开始,以及如何过滤所有没有说 "NO DATA"

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

当我尝试对我来说似乎合乎逻辑的方法时,我得到 2 个错误,一个是 "missing expression" 在 ',' 之前,另一个是 "unable to get the Auto filter property of the range class" 指的是 (Column#,文本,行#) 部分。

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

这段代码有效,但给了我错误的数据集(我留下了我想要删除的所有内容,它仍然从第 1 行而不是第 2 行过滤。

任何帮助都会很棒。

如果我没理解错的话,你正在找这个:

$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()

能够找到解决方案,它实际上和我预期的一样简单:/

$SubCon_Vs_NOA.range("A2").autofilter(1,"<>NO DATA")
$SubCon_Vs_NOA.range("A3:A$rows").Entirerow.Delete() 
$SubCon_Vs_NOA.ShowAllData()