You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:09:02