【发布时间】:2019-03-30 11:14:12
【问题描述】:
我对 powershell 还是很陌生,觉得这可能是一个简单的问题,但我被困在我的程序中,试图过滤我的 excel 电子表格,然后删除过滤后的行。
理想情况下,我想过滤从第 3 行开始的 A 列中所有不显示“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 个错误,一个是在 -ne 之前的“缺少表达式”,另一个是“无法获取范围类的自动过滤器属性”指(Column#, Text, Row#) 部分。
$worksheet.usedrange.autofilter(1, "NO DATA", 2)
$worksheet.usedrange.offset(1,0).specialcells(12).Entirerow.Delete()
$worksheet.ShowAllData()
此代码有效,但给了我错误的数据集(我留下了我想要删除的所有内容,它仍然从第 1 行而不是第 2 行过滤。
任何帮助都会很棒。
【问题讨论】:
-
这对你来说可能不可行......但你有没有想过要导出到 CSV 并使用它? PoSh 可以直接、简单、快速处理 CSV 文件。 [咧嘴]
-
谢谢,我已经调查过了,但我的 CSV 知识甚至比我的 Excel/powershell 知识还要糟糕,而且我有 320 行代码使用 powershell 到 Excel,我无法再继续。我能够找到一个可用的解决方案来解决这个问题
-
随心所欲! [grin] 但是,如果您的数据是 2d 的,那么 CSV 格式的文件更容易使用 - 而且几乎总是更快。
标签: excel powershell powershell-3.0