- 최초 작성일: 2002-11-12
- 최종 수정일: 2026-09-26
- 조회수: 34 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 점수별 그룹목록 만들기2
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
Adversity makes men, but prosperity makes monsters.
Adversity successfully overcome is the great glory.
역경은 사람을 만들고 행운은 괴물을 만든다.
떳떳이 이겨낸 고난은 최대의 영광이다.
고난, 역경과 타협하지 않고 극복하는 자세가 중요하다는 얘기겠지요.
한 두어달 쯤 전 강좌시간에 아래의 [표 1]과 같은 형태의 자료를 [표2]와 같이
점수대별 그룹목록을 작성하는 방법에 대해 소개드린 적이 있었습니다.
(엉? 언제 그런 걸 알려줬어요?? 하시는 분들은 X0290 강좌를 살펴보세요)
점수별 그룹목록 만들기2
핵심 요약
역경은 사람을 만들고 행운은 괴물을 만든다. 떳떳이 이겨낸 고난은 최대의 영광이다.
- 역경은 사람을 만들고 행운은 괴물을 만든다.
- 떳떳이 이겨낸 고난은 최대의 영광이다.
- 고난, 역경과 타협하지 않고 극복하는 자세가 중요하다는 얘기겠지요.
[표 1]
| 번호 | 성명 | 국어 | 영어 | 수학 | 총점 | 평균 |
| 11 | 이무열 | 50 | 53 | 61 | 164 | 54.6666666666667 |
| 12 | 강감찬 | 96 | 63 | 94 | 253 | 84.3333333333333 |
| 13 | 권율 | 65 | 82 | 85 | 232 | 77.3333333333333 |
| 14 | 을지문덕 | 53 | 85 | 95 | 233 | 77.6666666666667 |
| 15 | 박경근 | 87 | 72 | 88 | 247 | 82.3333333333333 |
| 16 | 박유진 | 93 | 89 | 90 | 272 | 90.6666666666667 |
| 17 | 권예지 | 96 | 98 | 100 | 294 | 98 |
| 18 | 주정민 | 99 | 90 | 85 | 274 | 91.3333333333333 |
| 19 | 윤영미 | 63 | 72 | 63 | 198 | 66 |
| 20 | 김정구 | 50 | 74 | 67 | 191 | 63.6666666666667 |
| 21 | 이순신 | 63 | 91 | 93 | 247 | 82.3333333333333 |
| 22 | 한기찬 | 88 | 59 | 87 | 234 | 78 |
| 23 | 조재희 | 64 | 55 | 95 | 214 | 71.3333333333333 |
| 24 | 남상구 | 66 | 94 | 97 | 257 | 85.6666666666667 |
[표 2]
피벗 테이블의 그룹핑 기능을 사용하면 [표 2]와 같은 형태의 집계표를 작성할
수 있습니다. 그런데 우리가 가끔 사용하는 Frequency 함수를 사용하면 더욱
간편하게 구간별 빈도수를 구할 수 있습니다.
| 번호 | 성명 | 점수 | 점수대 | 빈도 | ||
| 1 | 이무열 | =INT(RAND()*120) | 10 | {=FREQUENCY(D66:D79,F66:F75)} | 0~10 | |
| 2 | 강감찬 | =INT(RAND()*120) | 20 | 0 | 11~20 | |
| 3 | 권율 | =INT(RAND()*120) | 30 | 1 | 21~30 | |
| 4 | 을지문덕 | =INT(RAND()*120) | 40 | 1 | 31~40 | |
| 5 | 박경근 | =INT(RAND()*120) | 50 | 0 | ... | |
| 6 | 박유진 | =INT(RAND()*120) | 60 | 1 | ... | |
| 7 | 권예지 | =INT(RAND()*120) | 70 | 1 | ... | |
| 8 | 주정민 | =INT(RAND()*120) | 80 | 2 | ... | |
| 8 | 윤영미 | =INT(RAND()*120) | 90 | 3 | ... | |
| 10 | 김정구 | =INT(RAND()*120) | 100 | 2 | 100 이상 | |
| 11 | 이순신 | =INT(RAND()*120) | 기타 | 2 | ||
| 12 | 한기찬 | =INT(RAND()*120) | =SUM(G66:G76) | |||
| 13 | 조재희 | =INT(RAND()*120) | ||||
| 14 | 남상구 | =INT(RAND()*120) |
빈도 부분(파란색 네모 안)에는 아래와 같은 수식이 들어 있습니다.
수식 좌우에 중괄호가 있는 것으로 보아... 배열 수식임을 직감적으로 아시겠지요?
{=FREQUENCY(D67:D80,F67:F76)}
Frequency 함수에 대해 살펴보도록 하겠습니다. Frequency는 범위 내에서
해당 값의 발생 빈도를 세로 배열 형태로 돌려주는 함수입니다.
배열을 반환하므로 수식을 입력할 때에도 수식이 입력될 범위를 지정한 다음,
Ctrl + Shift + Enter 키를 눌러 배열 수식의 형태로 입력해야 한다는 의미입니다.
사용 형식
FREQUENCY(data_array,bins_array)
| Data_array | 빈도를 계산할 값 집합의 참조 또는 배열입니다 |
| Bins_array | data_array에서 값을 분류할 간격의 참조 또는 배열입니다 |
Frequency 함수에서 한 가지 유의해야 할 사항은, 반환된 배열의 요소 개수가
요소 개수가 bins_array의 요소 개수보다 하나 더 많다는 것입니다.
그러잖아도 헷갈려 죽겠는데... 이건 또 무슨 소릴까요?
위의 수식을 눈여겨 본 분이라면 짐작하셨을 수도 있고 안 그럴 수도 있겠습니다만,
점수대 부분의 마지막 셀(하늘색 셀)은 참조 영역에서 빠져있지요?
마지막 추가 셀은 10 번째 구간값보다 큰 data_array의 값 개수를 반환한다는
의미입니다. 즉 점수가 100점 이상인 데이터의 개수를 세어서 알려주는 것입니다.
이제 이해가 되시지요? 다들 되시리라 믿고... ^^
다음 시간에 또...