-
Excel 매크로 (VBA) - 016. 중복 데이터 제거하기Excel/Excel 매크로 2022. 9. 7. 21:47728x90
전체 목차
- 001. 특정 행을 복사하여 삽입하기
- 002. 선택하여 붙여 넣기 기능 정리
- 003. 변수/Assignment/Loop/비교
- 004. 데이터가 있는 셀의 범위 알아내기
- 005. 데이터 시트(쉘) 순회하기
- 006. 셀 병합 하기
- 007. 변수에 저장되어 있는 데이터 확인하기 (디버그 기능)
- 008. 정렬하기 (Sort)
- 009. 버튼 컨트롤 (Excel Form vs. ActiveX)
- 010. 콤보 상자 컨트롤 (Excel Form vs. ActiveX)
- 011. 확인란/옵션단추 컨트롤(Excel Form vs. ActiveX)
- 012. 스핀단추 컨트롤(스피너, Excel Form vs. ActiveX)
- 013. 자동필터(Auto Filter)
- 014. 함수(function) (전편)
- 015 함수(function) (후편)
포스트 목차.
01. 엑셀에서의 중복된 데이터 제거
02. VBA에서 중복된 데이터 제거하기
03. 예제 및 설명
본 포스트에서는 시트에 있는 중복된 데이터를 제거하는 방법에 대해 다루려고 한다.
01. 엑셀에서의 중복된 데이터 제거
설명을 위해 다음과 같은 데이터를 준비했다. 공공 데이터 포탈에서 구한 자료이며, 울산광역시 동구 실내공기질 측정 대상에 대한 정보이다.
데이터 중에서는 임의로 중복데이터를 넣었다.
구별하기 쉽게 같은 색으로 표기했다.
엑셀에서는 데이터 메뉴의 "중복된 항목 제거"를 통해 중복 데이터를 제거할 수 있다.
1) 중복된 데이터를 제거할 영역을 선택한 후, 데이터 메뉴에 있는 중복된 항목 제거를 선택한다.
2) 중복 값을 판단할 열을 선택한다.
- 선택한 열을 기준으로 중복 데이터가 있으면, 해다 데이터들을 중복이라고 판단하고 하나의 데이터만 남기고 나머지는 삭제 해버린다.
- 정렬과 같이 내 데이터에 머리글 표시 옵션을 사용할 수 있다.
- 내 데이터에 머리글 옵션을 사용할 경우 다음과 같이 선택한 영역의 첫 줄이 열의 이름으로 사용된다.
- 내 데이터에 머리글 표시를 선택하지 않으면, 첫 행의 데이터도 데이터로 간주되며 다음과 같이 열 번호로 열을 선택하게 된다.
다시 예제로 돌아가서, 업소명과 소재지가 일치할 경우 중복된 데이터로 간주하여, 중복데이터 제거를 실행해보자.
위와 같이 설정한 후에 확인을 누르면, 다음과 같은 결과를 볼 수 있다.
색칠한 부분이 한 줄로 줄어들었음을 알 수 있다.
중복 데이터의 특성에 대해 알아보기 위해 다시 시트를 원복하자. 이번에는 가장 첫번째 열에 다음과 같이 연번을 넣는 열을 추가하자.
연번과 업소명을 기준으로 중복데이터를 제거해보자.
연번은 모든 데이터가 다르고, 업소명은 중복된 데이터가 있었다.
실행 결과는 위와 같이 중복된 값이 없다고 나온다. 즉, 우리가 중복된 항목 제거에서 기준이 되는 열을 선택하면, 그 열들의 데이터가 모두 일치하는 경우에만 중복 데이터로 인식한다.
이번에는 연번은 선택하지 말고 업소명만 선택하여 진행해보자.
업소명만 비교 시에는 중복된 데이터가 있기 때문에 위와 같은 메시지가 나오면서 중복 데이터가 제거된다.
02. VBA에서 중복된 데이터 제거하기
중복데이터 제거 작업을 VBA에서도 수행할 수 있다.
Range 객체의 RemoveDuplicates 메소드를 사용하면, Range 내의 중복데이터를 제거할 수 있다.
자세한 내용은 다음 링크를 참조하자
https://docs.microsoft.com/en-us/office/vba/api/excel.range.removeduplicates
RemoveDuplicates 메소드는 다음과 같이 두 개의 파라미터를 설정할 수 있다.
이름 필수여부 타입 설명 Columns 필수 Variant 중복데이터를 계산할 열의 인덱스를 모아둔 배열 Header 생략가능 XlYesNoGuess 내 데이터에 머리글 표시 옵션 지정 여부 XlYesNoGuess 열거형은 xlGuess(엑셀이 알아서 선택) , xlNo(내 데이터에 머리글 표시 안함), xlYes(내 데이터에 머리글 표시함)를 값으로 가질 수 있다.
03. 예제 및 설명
이제 간단한 예제를 통해 중복 데이터를 제거해보자.
위의 엑셀 기능 예제에서 연번을 추가하기 전의 데이터를 기준으로 중복된 데이터를 제거해보자.
임의로 중복된 데이터를 만든 것은 앞의 예제와 동일하다. 알아보기 쉽게 중복데이터에는 셀에 색칠을 했다.
12345678910111213141516171819Sub removeDuplicate()'Range를 저장할 변수 선언Dim section As Range'데이터가 있는 행의 수를 저장하기 위한 변수 선언Dim rowNum As Long'데이터가 있는 행의 수를 구한다. (1번열을 기준으로 구한다.)rowNum = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row'앞에서 선언한 Range 객체에 데이터 영역을 지정한다.Set section = ActiveSheet.Range(Cells(1, 1), Cells(rowNum, 6))'지정한 데이터 영역을 선택한다.section.Select'데이터 영역에대해 중복 제거를 실행한다.'이때, 첫번째 열과, 세번째 열을 기준으로 중복데이터를 판단한다.'내 데이터에 머리글 표시 함으로 지정한다.section.RemoveDuplicates Columns:=Array(1, 3), Header:=xlYesEnd Subcs 위의 Sub 프로시저를 실행하면 다음과 같은 결과를 볼 수 있다.
업소명과, 소재지를 기준으로 중복 데이터가 제거된 것을 확인할 수 있다.
728x90'Excel > Excel 매크로' 카테고리의 다른 글
Excel 매크로 (VBA) - 018. Vlookup으로 데이터 조회하기 (주식 종목 코드 조회) (4) 2022.09.11 Excel 매크로 (VBA) - 017. 텍스트 나누기 (공백, 특수문자) (1) 2022.09.08 Excel 매크로 (VBA) - 015. 함수(function) (후편) (0) 2022.09.06 Excel 매크로 (VBA) - 014. 함수(function) (전편) (0) 2022.09.05 Excel 매크로 (VBA) - 013. 자동필터(Auto Filter) (2) 2022.09.02