들어가며
INTERSECT() 함수는 Excel VBA에서 두 범위의 공통부분을 반환하는 내장 함수입니다.
이 함수를 사용하면 두 범위가 겹치는 부분(셀)을 쉽게 찾아볼 수 있습니다.
INTERSECT() 함수 구문
INTERSECT(range1, range2) : range1과 range2의 공통부분을 반환합니다.
- range1: 검사할 첫 번째 범위
- range2: 검사할 두 번째 범위
INTERSECT() 함수의 동작 방식
INTERSECT() 함수는
두 개의 범위 매개변수를 받아들여
그 부분이 겹치는 셀을 반환합니다.
만약 두 범위가 전혀 겹치지 않는다면, Nothing을 반환합니다.
- 두 범위의 공통된 셀이 없는 경우: INTERSECT() 함수가 Nothing을 반환합니다.
- 첫 번째 범위가 두 번째 범위를 포괄하는 경우: INTERSECT() 함수는 첫 번째 범위의 모든 셀을 반환합니다.
- 두 범위가 일부 셀에서만 겹치는 경우: INTERSECT() 함수는 두 범위에서 공통되는 셀만을 반환합니다.
INTERSECT() 함수 예시
다음은 INTERSECT() 함수의 몇 가지 예시입니다.
- 겹치지 않는 경우
Sub 예시()
Dim range1 As Range, range2 As Range
Set range1 = Sheets("Sheet1").Range("A1:A5")
Set range2 = Sheets("Sheet1").Range("B6:B10")
If Intersect(range1, range2) Is Nothing Then
MsgBox "range1과 range2는 겹치지 않습니다."
End If
End Sub
위 예시에서는 `range1`(`A1:A5`)과 `range2`(`B6:B10`)가 전혀 겹치지 않으므로 INTERSECT() 함수가 Nothing을 반환합니다. 따라서 메시지 상자가 나타나고 "range1과 range2는 겹치지 않습니다."라는 메시지를 보여줍니다.
- 부분적으로 겹치는 경우
Sub 예시()
Dim range3 As Range, range4 As Range
Set range3 = Sheets("Sheet1").Range("A1:C5")
Set range4 = Sheets("Sheet1").Range("B2:D4")
If Intersect(range3, range4) Is Nothing Then
MsgBox "range3과 range4는 겹치지 않습니다."
Else
MsgBox "range3과 range4의 공통된 셀: " & Intersect(range3, range4).Address
End If
End Sub
위 예시에서는 `range3`(`A1:C5`)와 `range4`(`B2:D4`)가
일부 셀에서만 겹치므로
INTERSECT() 함수가 두 범위에서
공통되는 셀만을 반환합니다.
따라서 메시지 상자가 나타나고
"range3과 range4의 공통된 셀: B2:D4"라는 메세지를 보여줍니다.
- 첫 번째 범위가 두 번째 범위를 포괄하는 경우
Sub 예시()
Dim range5 As Range, range6 As Range
Set range5 = Sheets("Sheet1").Range("A1:C5")
Set range6 = Sheets("Sheet1").Range("B2:D4")
If Intersect(range5, range6) Is Nothing Then
MsgBox "range5과 range6는 겹치지 않습니다."
Else
MsgBox "range5은 range6을 포괄합니다."
End If
End Sub
위 예시에서는 `range5`(`A1:C5`)가 `range6`(`B2:D4`)를 포괄하므로
INTERSECT() 함수가 첫 번째 범위의 모든 셀을 반환합니다.
따라서 메시지 상자가 나타나고
"range5은 range6을 포괄합니다."라는 메세지를 보여줍니다.
INTERSECT() 함수 활용 예시
INTERSECT() 함수를 사용하면 두 범위가 겹치는지 여부 뿐만 아니라,
공통된 셀의 모음도 쉽게 찾아볼 수 있습니다.
다음은 두 개의 셀이 포함된 Range를 검사하여
그 공통된 셀을 찾아내는 예시입니다
Sub 예시()
Dim cell1 As Range, cell2 As Range
Set cell1 = ThisWorkbook.Sheets("Sheet1").Range("A1")
Set cell2 = ThisWorkbook.Sheets("Sheet1").Range("B3")
If Intersect(cell1, cell2) Is Nothing Then
MsgBox "cell1과 cell2는 겹치지 않습니다."
Else
MsgBox "cell1과 cell2의 공통된 셀: " & Intersect(cell1, cell2).Address
End If
End Sub
위 예시에서는 `cell1`(`A1`)와 `cell2`(`B3`)가 전혀 겹치지 않으므로
INTERSECT() 함수가 Nothing을 반환합니다.
따라서 메시지 상자가 나타나고 "cell1과 cell2는 겹치지 않습니다."라는 메시지를 보여줍니다.
아래와 같이 겹치는 셀의 주소를 알려줄 수도 있습니다.
Sub 예시()
Dim rangeA As Range
Dim rangeB As Range
Dim intersection As Range
Set rangeA = Sheets("Sheet1").Range("A1:B5")
Set rangeB = Sheets("Sheet1").Range("B4:H9")
Set intersection = Intersect(rangeA, rangeB)
If Not intersection Is Nothing Then
Dim message As String
message = "범위 " & rangeA.Address & " 와 " & rangeB.Address & " 의 겹치는 셀:" & vbCrLf
For Each cell In intersection
message = message & cell.Address & vbCrLf
Next cell
MsgBox message, vbInformation
Else
MsgBox "범위 'A1:B5' 와 'B4:H9' 는 겹치지 않습니다.", vbInformation
End If
End Sub
마치며
INTERSECT() 함수는
두 범위의 공통된 셀을 쉽게 찾아볼 수 있는
강력한 도구입니다.
이 함수를 사용하면
코드를 더 간결하고 읽기 쉬운 상태로 만들 수 있습니다.
또한 두 범위가 겹치는지 여부 뿐만 아니라,
공통된 셀의 모음을 찾는 데에도 유용하게 사용할 수 있습니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
엑셀 VBA 엑셀에서 선택된 범위 정보 가져오기 (0) | 2024.08.17 |
---|---|
엑셀 VBA 조건에 맞는 코드 실행 : Select Case 문에 대한 기본 개념 및 사용법 (0) | 2024.08.17 |
엑셀 VBA Application.Close 와 Application.Quit의 차이 (0) | 2024.08.14 |
엑셀 VBA 매크로 포함된 파일 실행 시 엑셀 화면은 보이지 않고 매크로만 실행되게 하기 (0) | 2024.08.14 |
엑셀 VBA Alt+F11 키가 제대로 동작하지 않을 경우 (0) | 2024.08.14 |