2017-10-26 11 views
0

나는 18000 명의 고객이있는 데이터 시트를 가지고 있습니다. 이 목록의 약 10 %는 동일한 고객의 복제본이며 두 번 이상 중복되는 경우도 있습니다.VBA - RemoveAllDuplicateButOne()

나는 모든 중복을 찾고 데이터의 전체 행을 제거하기 위해 VBA를 사용하고 싶습니다. 하나의 데이터 행 (고객 1 명) 만 남겨 둡니다.

나는 온라인이 코드를 건너 :

Sub RemoveAllDuplicateButOne() 
    Dim LR As Long: LR = Range("A" & Rows.Count).End(xlUp).Row 
    ActiveSheet.Range("A1:A" & LR).RemoveDuplicates Columns:=1, Header:=Name 
End Sub 

그러나이 VBA 코드는 컬럼에 아래 행에서 열을 이동에만 A 행에서 제거 중복을 제거하고 열을 삭제하고 같은 공간이 방금 삭제되었습니다. 모든 종류의 고객 데이터를 혼합한다는 의미입니다.

나는 다음과 같은 코드를 시도했지만 나를 위해 작동하지 않습니다 내가 식별자에 사용할 수있는

ActiveSheet.Range("A1:W1800").RemoveDuplicates 
Columns:=Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19), Header:=xlYes 

열은 열 A (IP 주소), Coumn G (이메일 주소), 열 H 있습니다 (전화 번호). 이상적으로는 먼저 G 열을 사용하고 그 다음 H를 쓰고 VBA를 실행하고 싶습니다.

명확히하기 위해 식별 된 복제의 전체 행을 삭제하고 싶습니다.

어리석은 질문이나 복잡한 것으로 보이는 경우 죄송합니다. 잘 모르겠지만 검색을 해본 결과 답변을 찾을 수 없습니다. 어떤 도움이라도 감사 할 것입니다. 감사합니다.

+1

Excel 중복 제거 기능을 사용하지 않는 이유는 무엇입니까? –

+0

시도해 보니 전체 행이 아닌 중복 된 열만 제거됩니다. 중복 제거 열 아래의 열이 오염 된 행을 남기고 그 위치로 이동합니다. –

+1

중복 제거 열을 제거하지 마십시오! 전체 행을 선택하면 전체 행이 삭제됩니다. –

답변

1

참조 할 칼럼 만 표시하면됩니다. 당신이 매크로 레코더를 사용하는 경우 다음 출력 아래와 같이 줄 것이다 : 어떤 조정해야하는 것은 당신이 웹에서 발견 한 코드에서 취할 수 있습니다 마지막 행은

ActiveSheet.Range("$A$1:$W$1800").RemoveDuplicates Columns:=Array(1, 7, 8), _ Header:=xlYes

.

+0

배열이 G (전자 메일 주소)로 변경되었을 때 많은 양의 복제가 삭제되었지만 데이터에 차이가없는 많은 복제본을 보았을 때 (예 : 대문자가 필요함) 문제를 일으켰지 만 존재하지 않았습니다. –

+0

Excel의 중복 제거 기능은 대소 문자를 구분하지 않습니다. 즉, '배치', '배치'또는 '배치'는 모두 중복됩니다. 그것들을 제거하지 않으면 셀 중 하나에 보이지 않는 문자가 추가 될 것입니다. –