[VBA] 중복되는 자료만 찾아서 배경색 저장
막상 자료를 찾으려고 하면 작업한 파일을 찾아내기가 쉽지 않아 필요할 때 바로 이용할 수 있도록 VBA 코드를 원하는 형태에 맞게 수정해서 저장해둔다.
배경색 저장하는 것은 interior.colorindex 속성을 이용하면 된다.
중복자료의 의미는 두 Sheet 간에 서로 일치하는 데이터인 경우에 배경색을 칠하도록 한다.
즉, 작업을 해야 할 파일에다가 중복되는 자료를 표시하는 것이다.
Sub 중복자료Find() '// 중복되는 것만 배경색 칠하기
Dim sht1, sht2 As Worksheet '// 시트(Sheet)를 넣을 변수
Dim Target As Range '// 검사할 시트의 범위 구간
Dim rngAll As Range, FindCell As Range '// 현재시트의 구간 범위
Dim C As Range, strAddr As String '// 영역변수 및 주소를 저장할 변수
Dim i As Long
Application.StatusBar = True
Set sht1 = Sheets("Main") '// Main 워크시트는 현재 시트
Set sht2 = Sheets("Data") '// Data 워크시트는 데이터가 있는 Target 시트
Set rngAll = sht1.Range(sht1.Cells(2, "D"), sht1.Cells(Rows.Count, "D").End(3))
Set Target = sht2.Range(sht2.Cells(2, "A"), sht2.Cells(Rows.Count, "A").End(3))
sht1.Select
' rngAll.Interior.ColorIndex = xlNone '// 구간에 표시된 색상 전부 제거
For Each FindCell In rngAll.Cells
Application.StatusBar = "셀: " & FindCell.Address(0, 0) & " / " & FindCell & " 진행중..."
Set C = Target.Find(what:=FindCell, Lookat:=xlWhole)
'// Target 범위에서 FindCell 과 100% 일치하는 데이터를 찾아 C에 넣어라
If Not C Is Nothing Then '// 찾는 값이 있으면
strAddr = C.Address '// 최초 셀 주소를 기억하게 strAddr 에 저장
Do '// 무한 루프 시작
FindCell.Interior.ColorIndex = 15 '// 회색으로 설정
Set C = Target.FindNext(C) '// 다음셀을 찾음
Loop While Not C Is Nothing And strAddr <> C.Address '// 찿는 셀이 없거나 첫번째 셀이면 루프문 종료
End If
Next
Application.StatusBar = "작업완료"
Set rngAll = Nothing '// 메모리 비우기
End Sub