설정 sheet에서 수업에 들어가는 학반을 입력할 경우
차시입력 sheet 위에 자동으로 표시
주 1회 수업하는 학년(1,3학년)과 주2회 수업하는 학년(2학년)이 혼합되어있고
한학년을 2명의 교사가 학반으로 구분하여 수업하는 경우를 고려해
매 수업을 각각 입력하도록 설정
영어 듣기, 창의적 체험활동 등 재량휴업은 아니지만 수업을 할 수 없는 날을 반영하기 위해
수업교시를 입력하도록 설정
C1: 수업에 들어가는 학반의 정보를 가져와야 함, 한개반에 주2회 수업이 있는 경우를 고려해 "설정!$I$2:$I100"의 고유값(중복제외)을 가져와야함
{=IFERROR(INDEX(설정!$I$2:$I$100,MATCH(TRUE,COUNTIF($B$1:B1,설정!$I$2:$I$100)=0,0)),"")}
index(데이터 범위, 행번호, 열번호): 데이터 범위에서 n번째 행, n번째 열의 값을 불러옴
match(찾을 값, 데이터 범위, 옵션): 데이터 범위에서 찾을 값이 몇 번째 있는지 변환
countif(데이터 범위, 찾을 값): 범위에서 찾을 값의 갯수
참고문헌(고유값추출하기): https://blog.naver.com/poorsangel/220972952578
배열함수-배열수식: 오빠두 엑셀 Ctrl + Shift + Enter
C2: C1의 반에 해당하는 첫번째 수업요일과 수업교시를 가져와야 함
=IFERROR(INDEX(설정!$J:$J,SMALL(IF((차시입력!C$1=설정!$I:$I),MATCH(ROW(설정!$I:$I),ROW(설정!$I:$I)),""),ROWS($A$1:A1)))&INDEX(설정!$K:$K,SMALL(IF((차시입력!C$1=설정!$I:$I),MATCH(ROW(설정!$I:$I),ROW(설정!$I:$I)),""),ROWS($A$1:A1))),"")
C3: C1의 반에 해당하는 두번째 수업요일과 수업교시를 가져와야 함
=IFERROR(INDEX(설정!$J:$J,SMALL(IF((차시입력!C$1=설정!$I:$I),MATCH(ROW(설정!$I:$I),ROW(설정!$I:$I)),""),ROWS($A$1:A2)))&INDEX(설정!$K:$K,SMALL(IF((차시입력!C$1=설정!$I:$I),MATCH(ROW(설정!$I:$I),ROW(설정!$I:$I)),""),ROWS($A$1:A2))),"")
주당수업시수 4인 과목을 위해 4행으로 설정
수식이 길고 4행 21열 적용하여 그런가 프로그램이 느려짐 - 처리속도를 빠르게 하기 위해 "이름정의" 고려
참고문헌(vlookup 여러개 값을 세로로 변환하는 공식):
https://www.oppadu.com/vlookup-%ED%95%A8%EC%88%98-%EC%97%AC%EB%9F%AC%EA%B0%9C-%EA%B0%92-%EC%B6%9C%EB%A0%A5/
Rows(범위) => 범위의 행의 갯수를 나타냄
위 예제에서 박나연위치는 Rows($A$1:A1) => 1, 하태정위치는 Rows($A$1:A2) => 2 임
참고문헌(index와 match): https://m.blog.naver.com/PostView.nhn?blogId=villamoa003&logNo=220613136874&targetKeyword&targetRecommendationCode=1
찾을지역과 같은 지역 행 위치를 배열로 출력
Small(범위,1) -> 범위중 가장 작은 값
small(범위,2) -> 범위중 두번째 작은 값