• 최초 작성일: 2000-08-31
  • 최종 수정일: 2026-09-29
  • 조회수: 24 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: IF 함수의 조건이 8개 이상인 경우

들어가기 전에

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

메일 하나

안녕하세요

아래아 한글로 메일머지를 실행하는데 데이터가 많고 복잡(학생의 통지표 만들기)해서인지

에러가 납니다. 미리보기와 프린터는 되는데 파일로 저장하기가 안됩니다.

요즈음 엑셀을 배우면서 엑셀에서도 메일머지 기능이 있다는 것을 알았습니다. 우연히

어느 분의 예제가 있어 실행하여 보니 미리보기만 되더군요. 여기에 데이터 수(학생수)대로

Sheet를 만들었으면 합니다. 왜냐하면 어느 한 학생의 통지표를 보고 수정할 곳이 있으면

수정한 후 프린터를 하고 싶습니다.

참고 파일을 보내오니 참고하시고 답을 꼭 알려주시면 정말 고맙겠습니다.

봉투 만들기 예인데 보내는 사람 수대로 Sheet를 만드는 방법을 알면 통지표 만들기도

잘 할 수 있으리라 생각됩니다.

안녕히 계세요.

감사합니다.

메일 두울

안녕하세요. 저는 학교에서(고등학교) 영어를 가르치는 교사입니다.

Exceller님의 강의를 통해 많은 것을 배우고 있습니다. 감사합니다.

궁금한게 한가지 있습니다. If 함수를 사용하다 보면 조건이 일정한 개수를 넘어가면

에러가 뜨지는 않는데 결과값이 엉뚱한 것이 나옵니다.

왜 이렇게 되는 건지, 이런 경우 해결책은 없는지 궁금하군요. 꼭 답변을 주시면

감사하겠습니다. 수고하시고 늘 행복하세요.

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

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

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


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

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

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

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

IF 함수의 조건이 8개 이상인 경우

핵심 요약

  • 조건이 많아 중첩 IF만으로 처리하기 어려운 경우 VBA 사용자 정의 함수에서 Select Case 문으로 분기할 수 있습니다.
  • 프로그래밍 없이 처리하려면 등급별 결과를 조견표로 만든 뒤 VLOOKUP으로 해당 값을 찾는 방법을 사용할 수 있습니다.
  • VLOOKUP 결과가 없는 경우에는 ISERROR와 IF를 조합해 별도의 안내 문구를 표시할 수 있습니다.

본 강좌를 보시는 분들 중에 교직에 종사하시는 분, 그리고 학생들이 많으신 것 같습니다. Exceller가 학교를 졸업할 때 까지만 해도, 그리고 취직해서도 한참 동안은 Excel이 뭔지 들어보지도 못했는데 불과 5~6년 만에 엄청나게 많이 바뀐 것 같습니다. 기분이 좋군요.

아직 학생이신 분들은 다른 것은 몰라도 컴퓨터 하면 Excel 하나만큼은 졸업하기 전에 완전히 절단(?)을 내시기 바랍니다. 그래야 나중에 취직을 했을 때 여러분의 선배들과 얘기가 통할 것입니다.

'Excel로는 부족하다'고 생각되는 분들은 VBA와 VB까지 공부해 두시는 것도 좋겠지요. VBA를 확살하게 내 것으로 만들어 두면 VB야 저절로 따라오게 될 것이고 Web 상에서 사용되는 VB Script도 거의 껴안을 수 있게 됩니다. 그리고 VB, VBA를 공부하면서 익히게 되는 논리적 사고는 다른 프로그래밍 언어로의 확장시에는 물론이고 생활을 하면서도 많은 도움을 받을 수 있을 것이라고 생각합니다.

사설이 길었군요.

본론으로 들어가서… 첫번째 메일에 대해서는 예제 파일을 보내드렸고 자료실에도 올려 두었습니다. 혹시 아직 못보신 분은 "강좌자료실"에서 보실 수 있습니다.

그리고 두번째 질문…

If() 함수는 조건을 7개까지 밖에 사용할 수가 없습니다. 따라서 조건이 8개 이상이라면 다른 방법을 강구해야 합니다. VBA로 코딩을 하면 당연히 해결을 할 수가 있고, 엑셀의 고유 기능을 사용해도 해결을 하실 수 있습니다.

선생님께서 질문을 하셨으니 예제도 학교와 관련된 것으로 해야겠군요 ^^. 아래와 같은 학생별 성적표가 있다고 가정을 하고… 먼저, VBA를 사용해서 조건이 7가지를 넘을 경우 해결하는 방법입니다.

참고: If() 함수의 조건이 7개까지라는 설명은 Excel 2003 이하 버전 기준입니다. Excel 2007 이후 버전에서는 IF 함수를 최대 64단계까지 중첩할 수 있고, 최신 버전에서는 IFS 함수도 사용할 수 있습니다. 다만 조건이 많을 때 중첩 IF가 복잡해진다는 점은 같으므로 아래 방법은 여전히 유용합니다.

VBA를 사용하는 방법

보시는 바와 같이 Score() 라는 사용자 정의 함수를 하나 만들었습니다. VB Editor에서 보면 아실 테지만 코드 자체는 Select~ End Select 구문을 사용한 매우 단순한 코드입니다.

Option Explicit

Function Score(intGet As Integer) As Variant
    Select Case intGet
        Case 1: Score = 320
        Case 2: Score = 310
        Case 3: Score = 300
        Case 4: Score = 290
        Case 5: Score = 280
        Case 6: Score = 270
        Case 7: Score = 260
        Case 8: Score = 250
        Case 9: Score = 240
        Case 10: Score = 230
        Case 11: Score = 220
        Case 12: Score = 210
        Case 13: Score = 200
        Case 14: Score = 180
        Case 15: Score = 150
        Case Else: Score = "그런 등급없음"
    End Select
End Function
이름 등급 점수
갑순이 1 320 =score(C71)
을순이 2 310 =score(C72)
병순이 3 300 =score(C73)
정순이 4 290 =score(C74)
무순이 9 240 =score(C75)
기순이 10 230 =score(C76)
경순이 11 220 =score(C77)
신순이 7 260 =score(C78)
임순이 17 그런 등급없음 =score(C79)
계순이 15 150 =score(C80)

VLOOKUP 함수 사용

(1) Vlookup() 함수를 사용해서 해결하려면 먼저 각 등급별 조견표를 하나 만들어야 합니다.

<점수별 조견표> <Vlookup 사용>
등급 점수 이름 등급 점수
1 320 갑순이 1 320
2 310 을순이 2 310
3 300 병순이 3 300
4 290 정순이 4 290
5 280 무순이 9 240
6 270 기순이 10 230
7 260 경순이 11 220
8 250 신순이 7 260
9 240 임순이 17 그런 등급없음
10 230 계순이 15 150
11 220
12 210
13 200
14 180
15 150

(2) 그런 다음에 이제 널리 알려진(!) Vlookup 함수를 아래와 같은 형식으로 사용합니다.

=IF(ISERROR(VLOOKUP(F90,$B$90:$C$104,2,FALSE)),"그런 등급없음",VLOOKUP(F90,$B$90:$C$104,2,FALSE))

이상에서 설명드린 두 가지 방법 중에서 어떤 것을 사용하느냐는 여러분 자유입니다. 하지만 어짜피 VBA를 배우는 것이 여러모로 좋을 것이므로 첫번째 방법을 권장하고 싶습니다. 코드 자체도 아주 단순하며 얼마든지 확장이 가능하니까요.

오늘은 여기까지…

정리 — IF 함수의 조건이 8개 이상인 경우

구분내용
문제IF 함수의 조건이 많아지면 결과가 엉뚱하게 나옴 (원문 기준 7개까지만 사용 가능)
방법 1VBA 사용자 정의 함수에서 Select Case 구문으로 등급별 값을 지정
방법 2등급별 조견표를 만들고 VLOOKUP 함수로 값을 찾음
VLOOKUP 오류 처리=IF(ISERROR(VLOOKUP(F90,$B$90:$C$104,2,FALSE)),"그런 등급없음",VLOOKUP(F90,$B$90:$C$104,2,FALSE))
권장VBA를 배워 두면 확장이 쉬우므로 첫 번째 방법 권장

자주 묻는 질문 (FAQ)

Q1. IF 함수의 조건이 너무 많을 때는 어떻게 하나요?

VBA로 사용자 정의 함수를 만들어 Select Case 문으로 처리하거나, 등급별 값을 조견표로 만들어 VLOOKUP 함수로 찾는 방법을 사용할 수 있습니다.

Q2. VLOOKUP으로 처리할 때 조견표에 없는 값은 어떻게 하나요?

ISERROR와 IF 함수를 조합해 VLOOKUP 결과가 오류이면 그런 등급없음 같은 안내 문구를 표시하도록 합니다.

Q3. 두 방법 중 어느 쪽을 권장하나요?

원문에서는 코드가 단순하고 얼마든지 확장할 수 있는 VBA 사용자 정의 함수 방법을 권장합니다.

마치며

조건이 많아 IF 함수가 한계에 부딪힐 때는 사용자 정의 함수나 조견표를 이용하면 깔끔하게 해결됩니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.