오늘은 Excel에서 데이터를 다루는 데 도움이 되는 사용자 정의 함수를 하나 만들어 보겠습니다.
이 함수는 엑셀 365에서 지원하는 Unique 함수 기능 중에
중복값을 제외한 고유한 값을 추출하는 기능을 구현해 보았습니다.
이 함수는 특정 범위에서 중복을 제거하고
고유한 값을 가로 또는 세로 방향으로 출력할 수 있습니다.
주 요 기 능
1. 고유 값 추출 : 중복된 값을 제거하고 고유한 값만 출력합니다.
2. 출력 방향 선택 가능 : 출력 방향을 세로(기본값) 또는 가로로 설정할 수 있습니다.
전 체 코 드
전체코드는 다음과 같습니다.
Function MyUnique(rng As Range, Optional orientation As Long = 1) As Variant
Dim dict As Object
Dim cell As Range
Dim i As Long
Set dict = CreateObject("Scripting.Dictionary")
For Each cell In rng
If cell.Value <> "" Then
dict(cell.Value) = ""
End If
Next cell
If orientation = 1 Then
MyUnique = Application.Transpose(dict.Keys)
ElseIf orientation = 2 Then
MyUnique = dict.Keys
End If
End Function
사 용 방 법
1. Excel 파일을 열고 Alt + F11을 눌러 VBA 편집기를 실행합니다.
2. 메뉴에서 삽입 → 모듈을 클릭하여 새 모듈을 추가합니다.
3. 위 코드를 복사해서 붙여넣습니다.
4. 엑셀 시트에서 함수를 호출합니다.
=MyUnique(A1:A10) : 고유한 값들이 세로 방향으로 출력됩니다.
=MyUnique(A1:A10, 2) : 고유한 값들이 가로 방향으로 출력됩니다.
코 드 분 석
Set dict = CreateObject("Scripting.Dictionary")
VBA에서 Dictionary를 사용할 수 있게 합니다.
딕셔너리(Dictionary)에 대한 설명은 앞선 블로그를 참고하시면 됩니다.
[EXCEL VBA] 엑셀 VBA에서 Dictionary 사용하기
For Each cell In rng
If cell.Value <> "" Then
dict(cell.Value) = ""
End If
Next cell
함수를 호출할 때 받은 범위의 셀 값을 딕셔너리의 키로 만들어 줍니다.
앞선 블로그에서 딕셔너리의 키는 고유한 값을 가진다고 했습니다.
기존의 키와 동일한 값이 들어갈 수가 없습니다.
단, 셀 값이 비어있을 경우는 제외합니다.
그리고 셀에 입력된 값을 딕셔너리의 키로 만든 후 딕셔너리의 값은 공백으로 정해줍니다.
값을 공백으로 정하는 것은 이 코드에서 큰 의미는 없습니다.
무엇으로 정하더라도 코드는 작동될 겁니다.
If orientation = 1 Then
MyUnique = Application.Transpose(dict.Keys)
ElseIf orientation = 2 Then
MyUnique = dict.Keys
End If
이 코드는 고윳값을 어느 방향으로 출력할지 결정해 줍니다.
인자를 입력하지 않거나, 1을 입력할 경우 세로 방향으로 출력합니다.
인자를 2를 입력할 경우 가로 방향으로 출력을 합니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
[ 엑셀 VBA ] 체크 박스 삭제하기 : VBA 체크 박스 생성 및 삭제 자동화 (0) | 2024.08.23 |
---|---|
[ 엑셀 VBA ] VBA 유저폼 셀 조작 가능하게 하기 : 모달 VS 비모달 (0) | 2024.08.23 |
엑셀 VBA에서 Dictionary 사용하기 (0) | 2024.08.21 |
엑셀 VBA 엑셀에서 선택된 범위 정보 가져오기 (0) | 2024.08.17 |
엑셀 VBA 조건에 맞는 코드 실행 : Select Case 문에 대한 기본 개념 및 사용법 (0) | 2024.08.17 |