엑셀

일정한 기준으로 배정하기

파란바람이 2021. 1. 7. 16:58

일정한 기준으로 배정하는 방법을 질문 받았는데, 질문하며 참조했다는 파일을 열어보니 함수를 이용해 멋지게 구현해 놓은 것이었습니다.

성적순위별 전공 배정표.xlsx 파일 이름으로 검색해서 블로그를 찾았습니다.

 

svetak.tistory.com/m/75

 

1지망부터 4지망까지 있고 성적 순서대로 정렬한 상태에서 아래 학과별 정원을 고려해 배정하는 것입니다.

사용되는 함수는 IF, COUNTIF, VLOOKUP 함수로 많이 사용되는 함수들입니다.

 

원하는 작업이 성적순이 아니라 지망순으로 배정하길 원하는 것입니다.

1지망을 우선 배정하고, 다음 2지망, 3지망순으로 배정하는거죠.

함수로 할 방법을 떠오르지 않고 VBA로, 그것도 반복문을 세번이나 중첩해 작성했습니다.

Public Sub 배정()
    For i = 4 To 7      ' D열부터 G열까지
        For j = 4 To 19 ' 행
            If Range("H" & j) = "" Then
                지망 = Cells(j, i)
                
                For k = 22 To 30
                    If 지망 = Cells(k, 1) Then
                        Exit For
                    End If
                Next k
                
                If Range("B" & k) > Range("C" & k) Then
                    Range("H" & j) = 지망
                    Range("C" & k) = Range("C" & k) + 1
                End If
            End If
        Next j
    Next i
End Sub

작업할 내용이 많지 않기 때문에 처리 시간이 오래걸리지 않아 문제가 없었는데, 작업량이 많아지면 알고리즘을 다시 생각해 봐야겠습니다.

 

작업 파일을 첨부합니다.

지망순전공배정표.xlsm
0.02MB