반응형
데이터를 입력하시는 분들이 가장 기본적이지만 가장 불편한... KEY(ID) 값 유니크 성 체크하기!!
과거 비슷한 글을 작성하긴 했었습니다.
저는 서식으로 중복값을 체크했었습니다.
결국... 셀 삽입, 셀 삭제, 복사, 붙여 넣기 등 데이터를 입력하면서 지정했던 서식 범위가 뒤죽박죽.... 결과적으로 정상 동작을 하지 못하는 상태가 되었죠..
그래서 중복 데이트 체크하는 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' 카테고리의 다른 글
VBA로 해당 폴더 내 모든 하위 폴더까지 있는 모든 파일 이름 찾기 (1) | 2024.11.03 |
---|---|
VBA에서 엑셀파일(워크북)을 변수로 지정하기 (0) | 2024.07.06 |
VBA에서 엑셀 조건부 서식 모두 지우기 및 중복값 규칙 만들기 (0) | 2024.06.17 |
VBA 사진 추가하는 방법 (Shapes.AddPicture) (1) | 2024.04.07 |
Selenium에서 Select 선택 된 값 불러오기 (0) | 2024.03.03 |
댓글