我是Powershell新手用户,希望得到以下帮助:
我将一个数组中的值与另一个数组中的值进行比较。如果它们匹配,我将值写入单元格,如果没有匹配,则单元格突出显示为红色。但是,只有两个小数组(每个约200个值),搜索需要数小时。必须有更好的方法,请帮助。
$ArrFinal = $arrA + $arrB + $arrC + $arrD
$ArrFinal = $ArrFinal | select -uniq | sort-object
for ($k=1; $k -lt $ArrFinal.length; $k++)
{
for ($j=1; $j -lt $arrA.length; $j++)
{
if($ArrFinal[$k] -like $arrA[$j])
{
$cells.item($k+1,2)=$arrA[$j]
$cells.item($k+1,2).Interior.ColorIndex = 2
break
}
else
{
$cells.item($k+1,2).Interior.ColorIndex = 3
}
}
}
答案 0 :(得分:3)
假设您在这里谈论Excel:不要单独为每个单元格着色。对于整个范围,将ColorIndex
设置为3,并且仅在实际更改其值时更改单元格的颜色。更好的是,使用conditional format将空单元格与非空单元格区别开来。
我也放弃了内循环。您想要检查2 nd 数组是否包含1 st 中的值,因此您可以使用-contains
运算符并从中写入值1 st 数组到单元格($ArrFinal[$k]
和$arrA[$j]
完全相同。)
$ArrFinal = $arrA + $arrB + $arrC + $arrD | select -uniq | sort-object
for ($k=1; $k -lt $ArrFinal.length; $k++) {
if ($arrA -contains $ArrFinal[$k]) {
$cells.Item($k+1, 2) = $ArrFinal[$k]
$cells.Item($k+1, 2).Interior.ColorIndex = 2
}
}