使用powershell筛选和删除excel中的行

使用powershell筛选和删除excel中的行,excel,powershell,powershell-3.0,Excel,Powershell,Powershell 3.0,我对powershell还是很陌生,觉得这可能是一个简单的问题,但我的程序一直在尝试过滤excel电子表格,然后删除过滤后的行 理想情况下,我希望从第3行开始,筛选A列中未显示“无数据”的所有行。 一旦我有了所有这些行,我想将它们全部删除。 然后返回所有“无数据”的行 我搞不懂的是如何编写脚本,使筛选器从第2行开始,以及如何筛选所有不说“无数据”的行 当我尝试对我来说似乎合乎逻辑的方法时,我得到了两个错误,一个是“,”before-ne后面的“missing expression”,另一个是指(

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

理想情况下,我希望从第3行开始,筛选A列中未显示“无数据”的所有行。 一旦我有了所有这些行,我想将它们全部删除。 然后返回所有“无数据”的行

我搞不懂的是如何编写脚本,使筛选器从第2行开始,以及如何筛选所有不说“无数据”的行

当我尝试对我来说似乎合乎逻辑的方法时,我得到了两个错误,一个是“,”before-ne后面的“missing expression”,另一个是指(Column#,Text,Row#)部分的“无法获取range类的自动筛选属性”

$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()
$StartRow=3
$RowCnt=$worksheet.UsedRange.Rows.Count
$worksheet.Range(“A$($StartRow):A$($RowCnt)”).AutoFilter(1,“无数据”)
$worksheet.usedrange.offset($StartRow,0).specialcells(12).Entirerow.Delete()
$worksheet.ShowAllData()

如果我理解正确,您正在查找:

$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()
$StartRow=3
$RowCnt=$worksheet.UsedRange.Rows.Count
$worksheet.Range(“A$($StartRow):A$($RowCnt)”).AutoFilter(1,“无数据”)
$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()
$subco\u Vs\u NOA.range(“A2”).自动筛选(1,“无数据”)
$subcontc\u Vs\u NOA.range(“A3:A$rows”).Entirerow.Delete()
$SUBSCO_Vs_NOA.ShowAllData()

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

$SubCon_Vs_NOA.range("A2").autofilter(1,"<>NO DATA")
$SubCon_Vs_NOA.range("A3:A$rows").Entirerow.Delete() 
$SubCon_Vs_NOA.ShowAllData()
$subco\u Vs\u NOA.range(“A2”).自动筛选(1,“无数据”)
$subcontc\u Vs\u NOA.range(“A3:A$rows”).Entirerow.Delete()
$SUBSCO_Vs_NOA.ShowAllData()

这可能不适合您……但您是否想过导出到CSV并使用它?PoSh可以直接、简单、快速地处理CSV文件。[咧嘴笑]谢谢,我已经研究过了,但是我的CSV知识甚至比我的Excel/powershell知识还要差,我有320行使用powershell到Excel的代码,这是我无法重复的。我能够找到这个问题的可用解决方案,考虑一下什么是有效的![grin]然而,如果你的数据是二维的,那么CSV格式的文件就更容易处理——而且几乎总是更快。这可能对你来说是不可能的……但是你有没有想过导出到CSV并使用它呢?PoSh可以直接、简单、快速地处理CSV文件。[grin]谢谢,我已经研究过了,但是我的CSV知识甚至比我的Excel/powershell知识还要差,我有320行使用powershell到Excel的代码,这是我无法重复的。我能够找到这个问题的可用解决方案,考虑一下什么是有效的![grin]但是,如果您的数据是二维的,那么CSV格式的文件就更容易使用,而且几乎总是更快。我能够找到解决方案,但答案是肯定的。这就是解决方案的本质:)我能够找到解决方案,但答案是肯定的。这就是解决方案的本质:)