일자별로 감독자 현황이 나와있고
각 일자별로 감독자가 두명이 있는 테이블이다.
1. 테이블을 순환하며 감독자 이름을 비교
2. 감독자별 날짜를 찾아서 배열에 넣음
3. 날짜를 비교하여 빠른 날짜가 앞에 오도록 배열 재지정
Function fnDay(rngArea As Range, rngC As String) As 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
'VB(A)' 카테고리의 다른 글
소방 21주기 교대근무 근무표 (0) | 2015.04.04 |
---|---|
근무일수 파악 (0) | 2015.04.01 |
폴더 선택 후 셀 크기에 맞게 이미지 불러오기 (0) | 2015.03.28 |
거래처번호 기준으로 셀병합 후 부분합 (0) | 2015.03.27 |
연속된 숫자는 ~로 표현하기 (0) | 2015.03.26 |