2

我是新手 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
            }
      }
  }
4

1 回答 1

3

假设您在这里谈论 Excel:不要单独为每个单元格着色。将整个范围设置ColorIndex为 3 一次,并且仅在实际更改其值时更改单元格的颜色。更好的是,使用条件格式将空单元格与非空单元格着色不同。

另外我会放弃内循环。您想检查第二个数组是否包含第一个数组中的值因此您可以使用运算符并将第一个数组-contains中的值写入单元格(毕竟相等)。$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
  }
}
于 2013-06-25T21:40:40.277 回答