VB(A)

감독자 일자 파악

당근쨈 2015. 3. 31. 13:17

일자별로 감독자 현황이 나와있고

각 일자별로 감독자가 두명이 있는 테이블이다.


1. 테이블을 순환하며 감독자 이름을 비교

2. 감독자별 날짜를 찾아서 배열에 넣음

3. 날짜를 비교하여 빠른 날짜가 앞에 오도록 배열 재지정


Function fnDay(rngArea As Range, rngC As StringAs String
 
    Dim rngCell As Range
    Dim arrDay() As Date, arr() As String
    Dim Temp As Date
    Dim i As Integer, j As Integer
    
    '감독일자 순환하며 작업
    For Each rngCell In rngArea
        If rngCell = rngC Then
            ReDim Preserve arrDay(i)
            
            With rngCell
            
                '감독자가 일치할 때 바로 윗값이 날짜인지 이름인지 구분
                If IsNumeric(Left(.Offset(-1), 1)) Then
                    arrDay(i) = .Offset(-1)
                Else
                    arrDay(i) = .Offset(-2)
                End If
                
            End With
                i = i + 1
        End If
    Next rngCell
    
    '날짜별 재정렬
    For i = 0 To UBound(arrDay)
        For j = i + 1 To UBound(arrDay)
            
            '앞 날짜가 뒤 날짜보다 크면 재배열
            If arrDay(i) > arrDay(j) Then
                Temp = arrDay(i)
                arrDay(i) = arrDay(j)
                arrDay(j) = Temp
            End If
            
        Next j
    Next i
    
    '날짜형식을 월,일 형식으로 서식변경
    For i = 0 To UBound(arrDay)
        ReDim Preserve arr(i)
        arr(i) = Format(arrDay(i), "m""월""d""일""")
    Next i
 
    fnDay = Join(arr, ",")
End Function
cs

Book1.xlsm