VB(A)

한 셀에서 중복제거후 정렬

당근쨈 2019. 3. 17. 09:44


Chronicle님(블로그 바로가기)께 약간 도움을 받은 내용입니다.


하나의 셀에 여러 데이터가 중복으로 있을 때

중복항목은 제거하여 오름차순 또는 내림차순으로 정렬하는 사용자정의 함수입니다.


ArrayList 개체를 활용하여 정렬을 한번에 하는 것이 이번 코드의 골자입니다.



한 셀에서 중복제거후 정렬.xlsm


Option Explicit
 
Function UniqueSort(ByVal s As String, Optional sortby As Boolean = FalseAs String
'중복된 데이터를 제거하고 오름차순 또는 내림차순으로 정렬하는 사용자정의 함수입니다.
'오름차순 정렬이 기본으로 설정되어 있습니다.
'내림차순으로 정렬하고자 하면 =UniqueSort(A1, True) 로 입력을 하면 됩니다.
 
    Dim v As Variant
    Dim C As Object
 
    Set C = CreateObject("System.Collections.ArrayList"'ArrayList 생성
 
    With C
    
        '고유항목만 ArrayList에 삽입
        For Each v In Split(s, ",")
        
            If Not .contains(v) Then .Add v
            
        Next v
 
        .sort   '배열을 오름차순으로 정렬(기본)
        
        If sortby = True Then .Reverse  'True가 있을 때 내림차순으로 정렬
        
        UniqueSort = Join(.ToArray, ",")
 
    End With
 
End Function
 
 
cs