エクセルVBAで範囲を比較
私たちはユニークで、ランダムに選択された範囲とハイライト細胞を比較エクセルVBAでプログラムを見ていきます以下は。あなたは リンクに慣れていない場合エリアはまだ、我々は非常にあなたが最初にこの例を読むことをお勧めします。
状況:
注:他のすべての値は少なくとも一つ以上の領域で発生するため、この例では唯一の一意の値が3です。 、( “E9:B7、D3:E6、D8 B2″)Ctrlキーを押しながら各エリアを選択する範囲を選択します。
ワークシート上のコマンドボタンを配置し、次のコード行を追加します。
1.まず、我々は4つのレンジオブジェクトとInteger型の2つの変数を宣言します。
Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer
2.私たちは、選択した範囲をRangeオブジェクトrangeToUseを初期化します。
Set rangeToUse = Selection
3.「塗りつぶしなし」にすべてのセルの背景色を変更する行を追加します。また、すべてのセルの境界を削除する行を追加します。
Cells.Interior.ColorIndex = 0 Cells.Borders.LineStyle = xlNone
彼または彼女は1つの領域のみを選択したときにユーザーに通知4。
If Selection.Areas.Count <= 1 Then MsgBox "Please select more than one area." Else End If
(5、6及び7で)次のコード行は他とEND IFの間に追加されなければなりません。
前記カラー選択された領域の細胞。
rangeToUse.Interior.ColorIndex = 38
6.各領域に接します。
For Each singleArea In rangeToUse.Areas singleArea.BorderAround ColorIndex:=1, Weight:=xlThin Next singleArea
このプログラムの7.残りの部分は次のように見えます。
For i = 1 To rangeToUse.Areas.Count For j = i + 1 To rangeToUse.Areas.Count For Each cell1 In rangeToUse.Areas(i) For Each cell2 In rangeToUse.Areas(j) If cell1.Value = cell2.Value Then cell1.Interior.ColorIndex = 0 cell2.Interior.ColorIndex = 0 End If Next cell2 Next cell1 Next j Next i
説明:これは圧倒的少し見えるかもしれないが、それは難しいことではありません。最初の2つのコードの行iが3 = 1の場合に低減し、jに対する3にI + 1 =私は= 1の場合rangeToUse.Areas.Countは、3に等しく、J = 2と、Excel VBAが第1の領域の全ての値を比較します第2領域のすべての値を持ちます。 iが1、J = 3 =ため、ExcelのVBAは、第3領域のすべての値を有する第1の領域のすべての値を比較します。 iが2、J = 3 =ため、ExcelのVBAは、第3領域の全ての値を有する第2の領域のすべての値を比較します。値が同じである場合、それらは固有のものではありませんので、それは、「塗りつぶしなし」に両方のセルの背景色を設定します。
あなたはシート上のコマンドボタンをクリックすると、結果: