• 최초 작성일: 2006-07-11
  • 최종 수정일: 2026-09-26
  • 조회수: 21 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 순위별 과목명 파악하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

한 학생의 국어·영어·수학·과학 순위를 이용해 1순위, 2순위, 3순위, 4순위에 해당하는 과목명을 자동으로 가져오는 방법을 살펴봅니다.

//질문 하나

첨부 파일을 보시면 한 학생의 국어, 영어, 수학, 과학의 순위가 각각 있습니다.

1등하는 과목과 2, 3, 4등 하는 과목을 각각 한글로 불러오고 싶습니다.

어떻게 방법이 없을까요? ㅠㅠ

학생2까지는 입력했는데…

일일이 직접 눈으로 확인하고 입력하려니 400명 넘게 확인하고 넣어야 하고…

책을 살펴봐도 응용을 할 수 있는 방법은 모르겠고 난감합니다. 좋은 방법 없을까요?

수고하세요~

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

순위별 과목명 파악하기

핵심 요약

SMALL 함수로 순위값을 찾고 MATCH로 해당 순위가 있는 위치를 찾은 다음 OFFSET으로 과목명을 가져오는 방법입니다.

  • 학생별 국어·영어·수학·과학의 순위값을 기준으로 1순위부터 4순위까지 과목명을 자동으로 가져옵니다.
  • SMALL 함수로 순위값을 작은 순서대로 찾습니다.
  • MATCH 함수로 해당 순위값이 있는 과목의 위치를 찾습니다.
  • OFFSET 함수로 계산된 위치의 과목명을 반환합니다.
  • COLUMN 함수와 ROW 함수를 이용하여 복사할 때도 순위별 결과가 자동으로 바뀌도록 구성합니다.

예제 데이터

■ 상담원별 성적 현황(3개월 평균)
1. 우수자
순번상담원1순위2순위3순위4순위국어영어수학과학
1학생1국어영어수학과학1235
5학생2영어국어과학수학1562524
3학생3영어국어과학수학931110
4학생4국어영어수학과학391024
5학생5영어국어과학수학1562524
6학생6과학수학영어국어14862
7학생7수학과학국어영어111445
8학생8영어국어과학수학2164328
9학생9과학영어국어수학1611234
10학생10국어수학영어과학10181120
11학생11영어수학국어국어18121418
12학생12영어수학수학국어20111313
13학생13국어수학과학영어17211920
14학생14수학영어국어과학24222131.3
15학생15영어국어수학과학29.316.33165
16학생16수학국어영어과학16.531.5969.5
17학생17수학과학영어국어28.321.715.718
18학생18국어수학영어과학22322377
19학생19과학영어수학국어3321.324.315.7
20학생20영어국어수학과학28.725.733.762.7
21학생21영어과학국어수학39.7156716.3
22학생22국어영어과학수학15.539.54840
23학생23영어국어수학과학31.7253856
24학생24영어수학과학국어34232631.3
25학생25과학국어영어수학27.33044.726.3
26학생26국어영어수학과학21.341.74447.7
27학생27영어수학국어과학362728.747.3
28학생28과학수학국어영어26.536.713.76.3
29학생29국어영어과학수학2934.36140.7
30학생30국어영어과학수학2838.756.348.7
31학생31수학영어국어과학45.7241854.5
32학생32수학국어과학영어32.337.718.737.3
33학생33과학국어영어수학34.33738.328.7
34학생34수학영어국어과학36.3352662.7
35학생35수학과학영어국어47.525913
36학생36수학과학영어국어403318.325.3
37학생37국어영어과학수학334347.347
38학생38수학영어국어과학39.336.72767.3
39학생39국어수학영어과학36.540.53954
40학생40수학과학국어영어3741633.5
41학생41수학과학영어국어48.3322931.3
42학생42과학영어수학국어4934.34130
43학생43국어수학영어과학2756.74458.7
44학생44수학영어국어과학48.73534.752
45학생45과학국어영어수학39.745.746.335.7
46학생46과학영어국어수학4441.75330
47학생47국어수학과학영어30.755.336.337
48학생48과학영어수학국어54.33342.724.7
49학생49수학영어국어과학5633079
50학생50수학영어국어과학48.34234.549.3
51학생51수학과학국어영어37.753.315.727.3
52학생52수학영어과학국어6328031
53학생53국어수학과학영어3261.345.748
54학생54영어수학국어과학59354977.5
55학생55과학수학국어영어44.75244.337.7
56학생56국어과학영어수학48.749.35449
57학생57과학수학국어영어42.3584135.3
58학생58영어수학과학국어663538.347.7
59학생59수학국어과학영어42.759.738.343.7
60학생60국어과학수학영어37.366.352.740.3
61학생61수학국어과학영어3372067
62학생62과학수학영어국어53.752.745.342.7
63학생63과학국어영어수학505762.744.3
64학생64수학영어과학국어63.745.31746
65학생65수학영어과학국어64.747.74257.3
66학생66수학과학국어국어56.356.334.340.3
67학생67수학국어과학영어4869060
68학생68과학수학국어영어576049.736
69학생69과학영어수학국어6454.761.745.3
70학생70국어수학과학영어45.37655.355.7
71학생71수학과학국어영어6061.747.749.7
72학생72과학수학영어국어62.3603327.3
73학생73영어수학국어국어70536070
74학생74과학수학국어영어5670.73431.7
75학생75과학수학영어국어7456.755.738
76학생76수학국어과학영어5378.748.766.7
77학생77과학수학영어국어74.757.75136.7
78학생78국어수학과학영어54.77857.760.3
79학생79수학영어과학국어72.361.35966.3
80학생80과학수학국어영어5976.35453
81학생81영어과학국어수학7263.57471.5
82학생82국어수학과학영어60777074
순위별 과목명 예제 화면
아이엑셀러

여기서 '학생1'의 과목별 순위를 보면 1, 2, 3, 5로 되어 있습니다.

따라서 각 과목 아래에 있는 숫자값이 작은 것부터 1순위, 2순위, 3순위 순으로 과목을 불러오면 되겠지요?

n번째의 작은 값을 불러와야 하므로 Small 함수를 사용해야 할 것 같고…

또 특정한 위치에서 얼마만큼씩 떨어져 있는 영역의 값을 불러와야 하므로 Offset 함수를 쓰고 싶다는 생각이 불현듯 머리에 떠오르시지요?

이런 생각을 했다는 것 자체만으로도 문제의 반은 해결한 것입니다.

이제 문제의 나머지 절반을 해결해 보도록 하지요.

수식 해석하기

C4 셀에는 이런 수식이 들어 있습니다.

길고 복잡한 수식을 만나면 도망가거나 혹은 눈싸움 하지 말고… 어떻게??

그렇습니다! 맨 안쪽부터, 도막을 내어 해석해서 나오면 됩니다.

이 경우에는 중첩되는(Nesting) 구조가 아니므로 그냥 앞에서부터 순차적으로 해석을 해 나가면 되겠습니다.

(1) -ROW()+3

ROW 함수는 참조 영역의 행 번호를 알려줍니다. '학생1'의 경우 4행에 위치해 있으므로 결과값은 '-1'입니다.

(2) SMALL($G4:$J4,COLUMN()-2)

C4 셀의 Column은 3이지요? 따라서 이 수식은 G4:J4 영역의 값 중에서 가장 작은 값을 구해 줍니다. 결과는 국어 과목인 '1'입니다.

(3) MATCH(SMALL($G4:$J4,COLUMN()-2),$G4:$J4,0)

'SMALL($G4:$J4,COLUMN()-2)'의 결과값이 1이었으므로 이 수식은 'MATCH(1,$G4:$J4,0)'으로 바꿀 수 있겠지요?

이 수식은 G4:J4 영역 중에서 1이라는 값이 들어있는 셀의 위치를 구하는 것이니까 결과값은 '1'입니다.

핵심 수식

=OFFSET($G4,-ROW()+3,MATCH(SMALL($G4:$J4,COLUMN()-2),$G4:$J4,0)-1)

학생1의 순위값은 국어 1, 영어 2, 수학 3, 과학 5입니다. 따라서 작은 값부터 순서대로 과목명을 불러오면 됩니다.

1. 행 위치 계산

-ROW()+3

학생1이 4행에 있으므로 결과는 -1이 됩니다.

2. n번째 작은 값 찾기

SMALL($G4:$J4,COLUMN()-2)

C4의 열 번호는 3이므로 COLUMN()-2는 1입니다. 따라서 G4:J4에서 가장 작은 값인 1을 찾습니다.

3. 해당 값의 위치 찾기

MATCH(SMALL($G4:$J4,COLUMN()-2),$G4:$J4,0)

첫 번째 순위값이 1이므로 MATCH(1,$G4:$J4,0)이 되고 결과는 1입니다.

4. OFFSET으로 과목명 반환

위의 행·열 이동값을 OFFSET에 전달하면 순위에 해당하는 과목명을 가져올 수 있습니다.

순위별 과목명 수식 설명 화면
아이엑셀러

정리

함수역할
SMALLn번째 작은 순위값 반환
MATCH순위값의 위치 반환
OFFSET계산된 위치의 과목명 반환

자주 묻는 질문 (FAQ)

순위에 따라 과목명을 자동으로 가져올 수 있나요?

SMALL로 순위값을 찾고 MATCH로 위치를 찾은 뒤 OFFSET으로 과목명을 가져올 수 있습니다.

왜 SMALL 함수를 사용하나요?

1순위, 2순위처럼 숫자가 작을수록 높은 순위이므로 n번째 작은 값을 찾기 위해 사용합니다.

INDEX와 MATCH로도 구현할 수 있나요?

가능합니다. 이 예제에서는 OFFSET을 이용해 기준 셀에서 필요한 위치로 이동하는 방식을 사용합니다.

마치며

길고 복잡해 보이는 수식도 안쪽의 함수부터 하나씩 계산해 보면 작동 원리를 쉽게 이해할 수 있습니다.