2012-03-06 33 views
1

엑셀 배열에서 중복 요소를 제거하려고합니다. 내가 가장 효율적인 방법으로이 일을하고 있지 않다 상상하고, 어쨌든 작동하지 않는 것 :excel vba - 배열에서 중복 제거

For lrw = 1 To UBound(rcArray) 
    For copyIndex = lrw + 1 To .Rows.Count 
     If rcArray(copyIndex) = rcArray(lrw) Then 
      rcArray(lrw).Delete 
     End If 
    Next copyIndex 
Next lrw 

내가 배열을 REDIM해야합니까? 누구든지이 코드에 대한 링크가 있습니까?

미리 감사드립니다.

+0

'rcArray'는 (는) 무엇으로 선언 되었습니까? 배열로 선언 된 경우이'rcArray (lrw) .Delete'는 작동하지 않고 오류가 발생합니다. –

+0

범위로 덤프하고 Excel의 기본 기능을 사용하여 고유 한 레코드를 추출한 다음 레코드를 두 번째 배열로 다시 덤프 할 수 있습니다. 배열을 버블 정렬하는 대신 데이터 정렬에 같은 방법을 사용할 수 있습니다. – brettdj

답변

0

일부 코드를 자꾸 사용하는 동안 새로운 배열을 만들고 유지하려는 값을 복사하는 것이 가장 좋습니다. 배열의 중간에있는 요소는 삭제할 수 없습니다.

Redim을 사용하면 배열 끝에 요소를 추가하거나 제거 할 수만 있습니다.

+0

그래서 값을 얻으면 새로운 배열에 복사합니까? 나는 생각한다. 값을 복사하기 전에 배열의 범위를 설정해야합니까? – thebiglebowski11

+0

예. 새 배열에 복사합니다. 별도의 인덱스가 있어야합니다.) 예는 경계를 초기 배열과 동일하게 설정합니다. 그런 다음 작업이 끝나면 redim을 사용하여자를 수 있습니다 (얼마나 많은 항목을 복사 할 것인지 추적하십시오) –