데이터를 입력하시는 분들이 가장 기본적이지만 가장 불편한... KEY(ID) 값 유니크 성 체크하기!!
과거 비슷한 글을 작성하긴 했었습니다.
VBA에서 엑셀 조건부 서식 모두 지우기 및 중복값 규칙 만들기
엑셀 데이터를 사용하다 보면 유니크(Unique) 체크가 필요한 경우가 있습니다. 흔히 기본 Key값(마이크로 액세스에서 사용한 것으로 기억합니다.) , ID 값이죠. 그래서 다양한 중복 체크 방법이 있
downupup.tistory.com
저는 서식으로 중복값을 체크했었습니다.
결국... 셀 삽입, 셀 삭제, 복사, 붙여 넣기 등 데이터를 입력하면서 지정했던 서식 범위가 뒤죽박죽.... 결과적으로 정상 동작을 하지 못하는 상태가 되었죠..
그래서 중복 데이트 체크하는 VBA를 하나 만들었습니다.
Sub CheckUniqueInColumnA()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim cellValue As String
Dim uniqueValues As New Collection
' 현재 워크시트 참조
Set ws = ThisWorkbook.Sheets("Sheet1") ' 원하는 시트 이름으로 수정하세요
' A열의 마지막 행 찾기
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' A열의 각 셀 값 확인
On Error Resume Next ' 중복 항목이 있을 때 오류를 무시하고 진행
For i = 1 To lastRow
cellValue = ws.Cells(i, 1).Value
If cellValue <> "" Then
uniqueValues.Add cellValue, CStr(cellValue)
If Err.Number <> 0 Then
MsgBox "중복된 값 발견: " & cellValue, vbExclamation, "유니크성 검사 결과"
Exit Sub
End If
End If
Next i
On Error GoTo 0 ' 오류 처리 복원
MsgBox "A열의 모든 값이 유니크합니다.", vbInformation, "유니크성 검사 결과"
End Sub
Collection의 특징을 활용합니다.
결국 Collection의 Key 값은 저희가 입력하는 ID(Key) 값과 동일하게 유니크해야 합니다. 그게 Key 값 이니까요.
그래서 이 원리를 이용해 Collection에 키값을 엑셀에 있는 데이터로 추가해서 에러 유/무를 체크하여, 중복 유/무를 확인할 수 있습니다.

uniqueValues.Add cellValue, Cstr(cellValue)
에서 Cstr(cellValue) 값이 결국 Key 값이 되면서 해당 값의 중복 유무를 찾게 됩니다.
Cstr이 반드시 필요하진 않지만 엑셀 값 특성상 형식이 뒤죽박죽일 수 있어서 포함하였습니다.
아래 이미지의 형식만 참조해 보시면 됩니다.

'엑셀 > VBA' 카테고리의 다른 글
CONCAT vs CONCATENATE 함수 비교와 구버전 Excel에서 대체하는 방법 (VBA 활용) (0) | 2025.04.13 |
---|---|
Excel VBA로 셀의 텍스트에 서식을 적용하는 방법: 전체 vs 부분 서식 정리 (0) | 2025.04.12 |
VBA로 해당 폴더 내 모든 하위 폴더까지 있는 모든 파일 이름 찾기 (1) | 2024.11.03 |
VBA에서 엑셀파일(워크북)을 변수로 지정하기 (0) | 2024.07.06 |
VBA에서 엑셀 조건부 서식 모두 지우기 및 중복값 규칙 만들기 (0) | 2024.06.17 |
댓글