2015-01-28 2 views
0

에 배열 코딩 나는 Excel에서 중복을 제거하려면 다음 코드를 :엑셀 VBA

AlertRange.RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, _ 
    7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, _ 
    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49), Header:=xlNo 

그것은 잘 작동합니다. 그러나 "Columns"매개 변수에 배열을 제공하는 더 좋은 방법이있을 수 있습니까? 코드가 어리석은 것처럼 보입니다.

+0

'Array (1:49)'? 또는 Array ("1:49")'Range()'또는'Columns() '와 동일하게 작동하는지 모르겠 음 – Chrismas007

+0

@ Chrismas007 - 둘 다 시도했지만 문법이 작동하지 않는 것 같습니다 – chapter3

답변

3

이후 RemoveDuplicates 당신은 루프를 만들 수 오히려 범위보다 변형, 0부터 배열을 원하는 :

Sub Macro() 
    Dim ary(0 To 48) 

    For i = 0 To 48 
     ary(i) = i + 1 
    Next i 

    Range("$A$1:$BB$20").Select 
    ActiveSheet.Range("$A$1:$BB$20").RemoveDuplicates Columns:=(ary), Header _ 
     :=xlNo 
End Sub 

(워)를 참고
이 아주 오래된 VBA 버그를 수용하는 것입니다.

+2

+1). 더 많은 정보를 원한다면 도움이 될 것입니다 [link] (http://stackoverflow.com/questions/5413765/what-are-the-rules-governing-usage-of-brackets-in-vba-function-calls). – dee

+0

@dee 링크에 대해 매우 고맙습니다 .......... 매우 유익합니다! –

+0

@ Gary의 스터디 ... thx! 나는 배열을 생성하는 작은 루틴이되도록한다. – chapter3