私たちはユニークで、ランダムに選択された範囲とハイライト細胞を比較エクセルVBAでプログラムを見ていきます以下は。あなたは リンクに慣れていない場合エリアはまだ、我々は非常にあなたが最初にこの例を読むことをお勧めします。

状況:

Compare Ranges in Excel 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の領域のすべての値を比較します。値が同じである場合、それらは固有のものではありませんので、それは、「塗りつぶしなし」に両方のセルの背景色を設定します。

あなたはシート上のコマンドボタンをクリックすると、結果:

Compare Ranges Result