【发布时间】:2018-06-16 04:13:06
【问题描述】:
我正在使用 Powershell 处理一个包含数千个计算机名和 IP 的 .csv 文件。我正在使用 powershell,因为它是我正在构建的更大脚本的一部分。
我通过 Excel 使用 Range.AutoFilter() 方法来删除我不需要的 IP。在下面的示例中,我想删除 pc1、pc2 和 pc5。
示例表:
Name 1 2 3 4
pc1 10 10 10 10
pc2 10 50 100 1
pc3 10 38 20 55
pc4 10 210 38 100
pc5 10 66 41 23
etc...
如果我手动创建数组,问题为零。
$Array1 = "38","210"
但是,我需要通过从第 3 列中提取唯一值来创建数组,如下所示:
$Array2 = @()
$row = 2
Do {
$value = $Sheet1.Cells.Item($row,3).Text
$Array2 += "$value"
$row++
} until (!$Sheet1.Cells.Item($row,1).Text) #column 1 is less likely to have blanks
$Array2 = $Array1 | Sort-Object -unique
但是当我将 $Array2 放入我的自动过滤命令时,我得到一个错误:
$Filter = $Array2
$Range = $Sheet1.UsedRange
[void] $Range.AutoFilter(3,$Filter,7)
异常设置“AutoFilter”:无法将“int”类型的“7”值转换为“Object”类型。
根据文档,7 是 XlAutoFilterOperator 的 xlFilterValues 的值。同样,如果我将 $Filter 切换到 $Array1,过滤器命令可以正常工作。
我不确定我是否缺少某些东西,或者从 Excel 值创建的数组是否导致了问题,或者是什么。任何帮助将不胜感激。
【问题讨论】:
标签: excel powershell