/ Excel VBA의 범위 비교

Excel VBA의 범위 비교

아래에서 우리는 Excel VBA비교하다 무작위로 선택 범위 고유 한 셀을 강조 표시합니다. 아직 익숙하지 않은 분은 먼저이 예제를 읽어 보시기 바랍니다.

상태:

Excel VBA의 범위 비교

참고 : 다른 모든 값은 적어도 하나 이상의 다른 영역에서 발생하기 때문에이 예에서 유일한 값은 3입니다. 범위 ( "B2 : B7, D3 : E6, D8 : E9")를 선택하려면 Ctrl 키를 누른 상태에서 각 영역을 선택하십시오.

워크 시트에 명령 단추를 놓고 다음 코드 줄을 추가하십시오.

1. 먼저 Range 객체 네 개와 Integer 유형의 두 변수를 선언합니다.

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. 모든 셀의 배경색을 "No Fill"로 변경하는 선을 추가하십시오. 또한 모든 셀의 테두리를 제거하는 선을 추가하십시오.

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)은 Else와 End If 사이에 추가해야합니다.

5. 선택한 영역의 셀을 색칠하십시오.

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

설명: rangeToUse.Areas.Count는 3이므로 첫 번째 두 코드 줄은 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는 두 번째 영역의 모든 값을 세 번째 영역의 모든 값과 비교합니다. 값이 같으면 두 셀의 배경색을 고유하지 않으므로 "채우기 없음"으로 설정합니다 .

시트에서 명령 단추를 누르면 결과 :

범위 비교 결과

또한 읽으십시오 :