라벨이 rank인 게시물 표시

우선순위 부여하여 동점자 석차 구하기

이미지
이전의 글에서 sumproduct함수를 설명하면서 동점자가 나왔을 때 추가의 기준을 적용하여 순위를 결정하는 방법 을 설명한 적이 있습니다. (예를 들어, 총점이 같을 경우 국어 점수가 높은 학생이 순위를 높게 하는 경우) rank함수를 써서 순위를 구하고, 동점자의 경우 자신보다 총점이 같으면서 국어점수가 높은 학생의 수를 구해서 순위에다 더해주는 방법이었습니다. 참고: http://garyjonesgogo.blogspot.kr/2015/11/11-12-sumproduct.html 그 글에서, 하나의 기준이 아니라, 제2,제3,제4의 기준을 주려면 어떻게 해야하나 는 문제에 대해서는 답을 내놓지 못했습니다.(예를 들어, 총점이 같을 경우, 국어점수를 우선으로, 국어점수도 같으면 영어점수, 영어점수도 같으면 수학점수….) 물론 rank와 sumproduct를 더하는 위의 방법을 쓸 수도 있습니다. 하지만 우선순위가 많아질수록 수식이 기하급수적으로 늘어납니다. 위의 그림에서처럼, 국어/영어/수학의 순서로 우선순위를 부여하면 수식이 저렇게 길어지게 됩니다. 더 좋은 방법을 발견할 수 없어 포기하고 있었는데, 지식인에 검색을 해보니 비슷한 고민을 하고 있는 사람의 질문에 답이 달려있었습니다. 참고: http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=72155130&qb=7JeR7IWAIOuPmeygkOyekA==&enc=utf8&section=kin&rank=49&search_sort=0&spq=0 지식인 답변을 참고하여 수식을 만들어 보았습니다. 이것도 짧은 수식은 아닙니다만, 가중치를 부여하는 기준이 아무리 많아져도 수식의 길이가 더이상 길어지지 않는다 는 장점이 있습니다. 가중값을 구하는 열만 하나 만들면 되는 겁니다. 수식의 기본적인 틀은, 총점이 같은 인원수가 1이면 보통의 RANK함수를 사용

1일1함수 (12) sumproduct함수 - 동점일때 다른 기준으로 순위매기기

이미지
오늘은 SUMPRODUCT함수를 다룹니다. SUMPRODUCT함수는 매우 다양한 문제의 해결을 위해 광범위하게 응용될 수 있는 함수입니다. 오늘은 석차를 낼때 사용하는 예를 들어 설명해 보겠습니다. 주어진 배열에서 해당 요소를 모두 곱하고 그 곱의 합계를 반환합니다. 구문 SUMPRODUCT ( array1 ,array2,array3, ...) array1, array2, array3, ...   곱한 후 더할 값이 들어 있는 배열을 지정합니다. 2개에서 255개 사이의 배열을 사용할 수 있습니다. 주의 인수로 사용하는 배열의 차원은 모두 같아야 합니다. 차원이 같지 않으면 #VALUE! 오류 값이 반환됩니다. 숫자가 아닌 배열 항목은 0으로 처리됩니다. SUMPRODUCT함수는 다음에 이야기하게 될 "배열함수"와 깊은 관련이 있습니다. 영어로는 ARRAY인데, 학교 다닐때 "행렬"이라는 이름으로 배운 기억이 있는데 엑셀에서는 "배열"이라는 표현을 씁니다. 배열로 수식을 작성하는 것은 저도 아직 정확하게 이해는 하지 못했지만, 대충 감은 잡고 있는데, 그 감을 잡는데 이 SUMPROCUT함수가 도움이 되었습니다. 이 함수는 위에 있는 설명에도 있듯이, 주어진 배열을 모두 곱한 뒤에 그 합계를 반환하는 함수입니다. (2,4) 라는 배열과 (3,5) 라는 배열이 있을때, SUMPRODUCT({2,4},{3,5})라고 하면 2*3 + 4*5 를 계산하여 26을 반환합니다. 같은 식을 다음과 같이 표현할 수도 있습니다. A1:A2 의 배열과 B1:B2의 배열이 * (논리곱)으로 연결되어있습니다. 이때의 계산식은 위에서 설명한 것과 같이, 2*3 + 4*5 입니다. 그런데, 다음처럼 + (논리합)으로 연결되면 (2+3) * (4+5) 를 계산하여 14를 반환합니다. 여기까지 SUMPRODUCT함수의 기본적인 설명이

1일1함수(3) : 순위 매기기 rank 함수

이미지
오늘은 간단한 함수를... 순위매기기 rank() 함수이다. RANK ( number , ref ,order) number   순위를 구하려는 수입니다. ref   숫자 목록의 배열 또는 참조입니다. 숫자 이외의 값은 무시됩니다. order   순위 결정 방법을 지정하는 수입니다 (0 이나 생략하면 내림차순, 1 올림차순) 개인적으로, 뒤에 order 인수를 설정하면 올림차순이나 내림차순을 정할 수 있다는 것을 몰랐다. 숫자가 낮은 것이 순위가 높게 하는 것(예를 들면, 수능 성적의 등급)을 하려면 역수를 구하거나 빼거나 해서 골치 아팠었는데.... " 매뉴얼 3회 정독 "이 카메라에만 적용되는 것은 아니었다. 여기서 주의할 점은, ref에 해당하는 부분 (여기서는 B2:B390)을 절대참조로 입력해야한다는 점이다. 지금처럼 입력해버리면 student2부터 그 이후의 학생들에 대한 순위를 구하는  수식을 붙여넣기 했을때 이와 같이 범위가 바뀌어 버려서 제대로 된 순위가 나오지 않는다.   따라서, 정확한 수식은  =RANK(B2,$B$2:$B$390) 이 되어야한다.