区域然而,我们强烈建议您先阅读这个例子。

现状:

Compare Ranges in Excel VBA

注意:在该实例中的唯一独特的值是3,因为所有其他值发生在至少一个更大的面积。要选择范围( “B2:B7,D3:E6,D8:E9”)时,按住Ctrl键并选择各个区域。

将工作表上的一个命令按钮并添加以下代码行:

1.首先,我们声明4个Range对象和Integer类型的两个变量。

Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer

2.我们初始化与所选择的范围中的范围对象rangeToUse。

Set rangeToUse = Selection

3.添加这改变所有单元格的背景色为“无填充”行。另外补充其删除所有小区的边界线。

Cells.Interior.ColorIndex = 0

Cells.Borders.LineStyle = xlNone

4.告知用户当他或她只选择一个区域。

If Selection.Areas.Count <= 1 Then

MsgBox "Please select more than one area."

Else

End If

下一个代码行(在图5,6和7)必须否则和结束如果之间添加。

5.颜色选择区域的细胞。

rangeToUse.Interior.ColorIndex = 38
  1. Border边框每个区域。

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

说明:这可能看起来有点势不可挡,但它并不难。 rangeToUse.Areas.Count等于3,所以第2行代码减少到对于i = 1〜3,对于j = I + 1至3对于I = 1,J = 2时,Excel VBA比较第一区域的所有值与第二区域的所有值。对于i = 1,J = 3时,Excel VBA与第三区的所有值的第一区域的所有值进行比较。对于i = 2,J = 3时,Excel VBA与第三区的所有值的第二区域的所有值进行比较。如果值是一样的,它同时设置单元格的背景色为“无填充”,因为它们不是唯一的。

结果当您单击工作表上的命令按钮:

Compare Ranges Result