PowerShell – find起始行后,从Excel中删除一行行

我有一个PowerShell脚本,用于searchExcel文件中特定的值(来自失败的VLOOKUP的“#N / A”),该脚本需要快速删除包含该行后的所有行。

我到目前为止所做的:

$sheetRange = $sheetData.UsedRange $colRange = $sheetData.Range("F1") [void] $sheetRange.Sort($colRange) $fileWorking.Save() $strFinder = "#N/A" $rngSearch = $sheetData.Range("F1").EntireColumn $txtFound = $rngSearch.Find($strFinder) $RowFound = ($txtFound.Row) for (($i = $RowFound); ($i -le $rowsTrans); $i++) { $currRow = $sheetData.Cells.Item($i).EntireRow [void]$currRow.Delete() } $fileWorking.Save() 

问题是,有超过20万行,我需要一次删除整个范围,而不是一行。 虽然我有一些混乱的语法,我不能完全弄清楚完成这个的正确的语法或方法。

显然, for循环只需要去,我需要设置$RowFound$rowsTrans之间的整个范围…但是这是怎么做的?

当您在Range.Find循环中运行时,构build包含所有地址的串联string。 使用它来定义Range.EntireRow属性为.Delete的Range对象 。

 ...Range("A2, A4, A10, A19").EntireRow.Delete 

这就像范围对象的联合一样使用范围对象定义。