如何修改PowerShell脚本实现删除Excel中含多个指定值的整行
调整后的PowerShell脚本实现
# 定义需要删除的A列匹配关键词列表,可按需新增更多值 $deleteKeywords = @('admin', 'system', 'computer') $i = 1 Do { $currentCellValue = $worksheet.Cells.Item($i, 1).Value() # 判断当前A列值是否在待删除关键词列表中 If ($currentCellValue -in $deleteKeywords) { # 直接删除当前行,无需额外指定列再取整行 $worksheet.Rows.Item($i).Delete() $i -= 1 } $i += 1 } While ($worksheet.Cells.Item($i,1).Value() -ne $null)
改动说明
- 新增
$deleteKeywords数组变量,所有需要匹配删除的取值都可以放到这个数组中,新增匹配项只需在数组内添加引号包裹的新值即可,多个值用逗号分隔 - 将原判断条件的相等匹配
-eq 'admin'替换为包含匹配-in $deleteKeywords,只要A列取值存在于待删除列表就会触发行删除逻辑 - 优化了行删除逻辑,将原代码中
$worksheet.Cells.Item($i, 5).EntireRow.Delete()简化为$worksheet.Rows.Item($i).Delete(),执行效率更高也更易读 - 需大小写敏感匹配可将
-in替换为-cin,默认-in为大小写不敏感匹配
可选扩展方案
如果需要模糊匹配(比如A列值只要包含关键词就删除,无需完全相等),可以改用正则匹配实现:
# 正则用|分隔多个匹配关键词,支持模糊匹配 $deletePattern = 'admin|system|computer' $i = 1 Do { $currentCellValue = $worksheet.Cells.Item($i, 1).Value() # 忽略大小写模糊匹配,需要大小写敏感可将-match改为-cmatch If ($currentCellValue -match $deletePattern) { $worksheet.Rows.Item($i).Delete() $i -= 1 } $i += 1 } While ($worksheet.Cells.Item($i,1).Value() -ne $null)
内容的提问来源于stack exchange,提问作者Maxime L
相关产品推荐
相关产品推荐

