일정한 기준으로 배정하는 방법을 질문 받았는데, 질문하며 참조했다는 파일을 열어보니 함수를 이용해 멋지게 구현해 놓은 것이었습니다.
성적순위별 전공 배정표.xlsx 파일 이름으로 검색해서 블로그를 찾았습니다.
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
작업할 내용이 많지 않기 때문에 처리 시간이 오래걸리지 않아 문제가 없었는데, 작업량이 많아지면 알고리즘을 다시 생각해 봐야겠습니다.
작업 파일을 첨부합니다.
'엑셀' 카테고리의 다른 글
여러 시트를 통합한 피벗 테이블 만들기 (0) | 2021.02.19 |
---|---|
날짜에 따라 일정한 위치에 복사해서 붙여넣기 (0) | 2021.01.07 |
엑셀 사용자 지정 서식에서 사용할 수 있는 색상명 (0) | 2021.01.07 |
엑셀 VBA로 자료 처리 - 신청자, 회원목록 비교 4 (0) | 2020.07.13 |
Change 이벤트와 Calculate 이벤트 (0) | 2020.07.11 |