Range 개체

Union 함수

노만e 2025. 3. 11. 08:08

엑셀 VBA에서 Union 함수는 여러 개의 범위를 하나의 범위로 결합할 때 사용됩니다.

즉, 비연속적인(떨어져 있는) 셀이나 범위를 하나의 범위 개체로 다루고 싶을 때 유용합니다.


1. 기본 문법

Union(범위1, 범위2, ..., 범위N)

📌 Union 함수는 여러 범위를 하나로 묶어 단일 개체로 반환합니다.

📌 Union(범위1, 범위2) → 범위1과 범위2를 하나의 범위 개체로 결합


2. 기본 예제

📌 두 개의 범위를 하나로 결합하여 선택

Sub Union_기본사용()
Dim rng As Range
Set rng = Union(Range("A1:A3"), Range("C1:C3")) ' 두 개의 범위를 합침
rng.Select
End Sub

📌 A1:A3 + C1:C3 를 하나의 범위로 묶고 선택


📌 여러 개의 비연속 범위 결합 후 배경색 변경

Sub Union_배경색변경()
Dim rng As Range
Set rng = Union(Range("A1:A3"), Range("C1:C3"), Range("E1:E3"))
rng.Interior.Color = RGB(255, 255, 0) ' 노란색 배경 적용
End Sub

📌 A1:A3, C1:C3, E1:E3 를 하나로 묶고 노란색 배경 적용


3. Union을 활용한 동적 범위 지정

📌 특정 열에서 특정 값을 포함하는 셀을 결합하여 선택

Sub 특정값_찾아_Union()
Dim rng As Range, cell As Range
Dim targetRng As Range
Set rng = Range("A1:A10") ' 검색 범위 지정
For Each cell In rng
If cell.Value = "찾을값" Then
If targetRng Is Nothing Then
Set targetRng = cell
Else
Set targetRng = Union(targetRng, cell)
End If
End If
Next cell
If Not targetRng Is Nothing Then
targetRng.Select ' 찾은 모든 셀을 선택
Else
MsgBox "값을 찾을 수 없습니다."
End If
End Sub

📌 A1:A10 범위에서 "찾을값"을 포함하는 모든 셀을 찾아 하나의 범위로 묶어 선택


4. Union을 활용한 데이터 입력

📌 비연속 범위에 동일한 값 입력

Sub Union_값입력()
Dim rng As Range
Set rng = Union(Range("A1:A3"), Range("C1:C3"))
rng.Value = "Hello"
End Sub

📌 A1:A3, C1:C3에 "Hello" 입력


📌 비연속 범위에 서식 적용

Sub Union_서식변경()
Dim rng As Range
Set rng = Union(Range("B2:B4"), Range("D2:D4"))
rng.Font.Bold = True ' 글자를 굵게
rng.Font.Color = RGB(255, 0, 0) ' 빨간색 글자
End Sub

📌 B2:B4, D2:D4에 글자 굵게 + 빨간색 적용


5. Union을 활용한 데이터 삭제

📌 비연속 범위의 데이터 삭제

Sub Union_데이터삭제()
Dim rng As Range
Set rng = Union(Range("A1:A3"), Range("C1:C3"))
rng.ClearContents ' 내용만 삭제
End Sub

📌 A1:A3, C1:C3의 값만 삭제 (서식 유지)


6. Union과 Intersect 함께 사용

📌 특정 범위 내에서 중복된 영역 찾기

Sub Union_Intersect_활용()
Dim rng1 As Range, rng2 As Range, commonRng As Range
Set rng1 = Range("A1:C3")
Set rng2 = Range("B2:D4")
Set commonRng = Intersect(rng1, rng2) ' 겹치는 부분 찾기
If Not commonRng Is Nothing Then
commonRng.Interior.Color = RGB(0, 255, 0) ' 초록색 배경
Else
MsgBox "겹치는 영역이 없습니다."
End If
End Sub

📌 A1:C3과 B2:D4의 겹치는 부분을 찾아 초록색 배경 적용


📝 정리

기능
VBA 코드
두 개 이상의 범위 결합
Set rng = Union(Range("A1:A3"), Range("C1:C3"))
결합된 범위 선택
rng.Select
비연속 범위 배경색 변경
rng.Interior.Color = RGB(255,255,0)
특정 값을 포함하는 셀 결합
If targetRng Is Nothing Then Set targetRng = cell Else Set targetRng = Union(targetRng, cell)
비연속 범위에 값 입력
rng.Value = "Hello"
비연속 범위에 서식 적용
rng.Font.Bold = True
비연속 범위 데이터 삭제
rng.ClearContents
두 범위의 교차 영역 찾기
Set commonRng = Intersect(rng1, rng2)

🔥 Union을 활용하면 여러 개의 범위를 하나의 범위로 묶어 강력한 자동화 작업이 가능합니다! 🚀