2

私は初心者の Powershell ユーザーであり、次の点について支援を求めています。

ある配列の値を別の配列の値と比較しています。一致する場合は値をセルに書き込み、一致しない場合はセルが赤く強調表示されます。ただし、小さな配列が 2 つしかない場合 (それぞれ ~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 について話していると仮定すると、各セルを個別に色付けしないでください。範囲全体で一度 3 に設定ColorIndexし、実際に値を変更したときにのみセルの色を変更します。さらに良いのは、空のセルを空でないセルとは異なる色にする条件付き書式を使用することです。

また、内側のループを削除します。2番目の配列に1番目の配列の値が含まれているかどうかを確認したいので、演算子を使用して、1番目の配列の値をセルに書き込むことができます(結局等しい-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 に答える