학점 계산 시트를 만들어본 적이 있다면 한 번쯤 이런 수식을 마주쳤을 것이다.
=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C",IF(B2>=60,"D","F"))))괄호가 네 겹, 다섯 겹 겹쳐지면서 어디서 어디까지가 하나의 조건인지 눈으로 쫓아가기가 점점 힘들어진다. 조건을 하나 더 추가하려고 괄호 개수를 세다가 실수로 하나를 빠뜨려 본 경험도 있을 것이다. 이 글에서는 이런 중첩 IF의 한계를 짚어보고, 이를 대체할 수 있는 IFS와 SWITCH 함수가 각각 어떤 원리로 동작하는지 살펴본다.
중첩 IF는 왜 한계에 부딪히는가
중첩 IF 자체가 잘못된 방법은 아니다. 다만 조건이 늘어날수록 두 가지 문제가 함께 커진다. 첫째는 가독성이다. IF 안에 IF가 들어가는 구조는 사람이 눈으로 괄호의 짝을 맞춰가며 읽어야 하는데, 조건이 4~5개를 넘어가면 이 과정 자체가 실수의 원인이 된다. 둘째는 수정의 어려움이다. 중간에 조건 하나를 끼워 넣으려면 괄호 구조 전체를 다시 손봐야 하는 경우가 많다. 엑셀은 이론적으로 IF를 64단계까지 중첩할 수 있도록 허용하지만, 실무에서는 그 한계에 도달하기 훨씬 전에 이미 유지보수가 불가능한 수식이 되어버린다. 즉 '몇 단계까지 가능한가'보다 '몇 단계부터 사람이 이해하기 어려워지는가'가 실질적인 한계선이다.
IFS 함수의 원리 — 순차평가라는 개념
IFS는 여러 개의 '조건, 결과값' 쌍을 나열해두면, 엑셀이 이를 위에서부터 순서대로 하나씩 검사하다가 처음으로 TRUE가 되는 조건을 만나는 순간 그 결과값을 반환하고 나머지는 검사하지 않는 구조다. 이것이 바로 '순차평가(sequential evaluation)'다. 중첩 IF가 괄호로 조건들을 층층이 감싸는 방식이었다면, IFS는 조건과 결과를 평면적으로 나열한다는 점이 다르다.
=IFS(B2>=90,"A", B2>=80,"B", B2>=70,"C", B2>=60,"D", TRUE,"F")여기서 마지막의 TRUE,"F"는 앞의 모든 조건이 거짓일 때를 대비한 일종의 '기본값' 처리다. IFS에는 ELSE에 해당하는 전용 인수가 없기 때문에, 이렇게 항상 참이 되는 조건을 마지막에 넣어주는 방식으로 처리하는 것이 관례다. 만약 이 마지막 조건을 빠뜨리고 어떤 값도 조건을 만족하지 못하면 IFS는 #N/A 오류를 반환한다는 점도 기억해두어야 한다.
SWITCH 함수의 원리 — 값 매칭이라는 개념
SWITCH는 접근 방식이 근본적으로 다르다. IFS가 매번 새로운 조건식(예: B2>=90)을 평가하는 반면, SWITCH는 하나의 표현식 값을 정해두고 그 값이 뒤에 나열된 여러 후보값 중 무엇과 일치하는지를 비교한다. 즉 '조건 평가'가 아니라 '값 매칭(value matching)'이다.
=SWITCH(WEEKDAY(A2),1,"일요일",2,"월요일",3,"화요일",4,"수요일",5,"목요일",6,"금요일",7,"토요일","알수없음")이 예제에서 SWITCH는 WEEKDAY(A2)라는 하나의 값을 계산한 뒤, 그 값이 1인지, 2인지, 3인지를 차례로 비교해 일치하는 요일 이름을 반환한다. 부등호를 이용한 범위 비교(90 이상, 80 이상 같은)는 SWITCH로 표현할 수 없다. SWITCH는 어디까지나 '이 값이 저 값과 같은가'를 판별하는 함수이기 때문이다. 그래서 학점처럼 구간을 나누는 문제는 IFS에, 요일·상태코드·카테고리명처럼 정해진 값 하나하나에 대응시키는 문제는 SWITCH에 더 적합하다.
IFS와 SWITCH, 언제 무엇을 쓸까
| 구분 | IFS | SWITCH |
|---|---|---|
| 평가 방식 | 여러 조건식을 순차적으로 평가 | 하나의 값을 여러 후보와 매칭 |
| 적합한 상황 | 구간·범위 판정 (예: 90점 이상, 80점 이상) | 고정값 대응 (예: 요일번호, 상태코드) |
| 기본값(ELSE) 처리 | 마지막에 TRUE 조건 추가 | 마지막 인수를 홀수 개로 남겨 기본값 지정 |
| 조건 실패 시 | #N/A 오류 | #N/A 오류 |
자주 하는 실수와 주의할 점
- IFS에서 조건 순서를 잘못 배치하는 실수: 예를 들어
B2>=60을B2>=90보다 먼저 적으면, 90점을 받은 학생도 첫 번째 조건에서 걸려버려 항상 낮은 등급이 반환된다. 반드시 좁은 범위(또는 더 엄격한 조건)를 먼저 배치해야 한다. - 기본값 조건을 빠뜨려서 예상치 못한
#N/A를 만나는 경우: 데이터에 예외적인 값이 섞여 있을 가능성을 항상 염두에 두고 마지막 조건을 챙기는 습관이 필요하다. - SWITCH로 범위 비교를 시도하다가 막히는 경우: 이럴 땐 SWITCH가 아니라 IFS나 중첩 IF로 전환해야 한다는 신호로 받아들이면 된다.
Q. IFS는 엑셀 어느 버전부터 쓸 수 있나요?
IFS와 SWITCH 모두 엑셀 2019 및 Microsoft 365 버전부터 제공된다. 그 이전 버전(2016 이하)에서는 지원되지 않으므로 중첩 IF나 VLOOKUP 조합을 사용해야 한다.
Q. IFS가 SWITCH보다 항상 더 나은 선택인가요?
그렇지 않다. 정해진 값 몇 개에 대응시키는 단순한 매칭이라면 SWITCH가 더 짧고 명확하다. 범위나 조건식이 필요한 경우에만 IFS를 선택하는 것이 좋다.
Q. 조건이 10개가 넘어가면 어떻게 해야 하나요?
이 경우 IFS도 가독성이 떨어지기 시작한다. 이럴 땐 별도의 참조표를 만들어 VLOOKUP이나 XLOOKUP으로 값을 찾아오는 방식이 더 유지보수하기 쉬운 대안이 될 수 있다.
마무리
중첩 IF의 핵심 문제는 '조건들을 층층이 감싸야 한다'는 구조 자체에 있었다. IFS는 그 조건들을 평면적으로 나열해 순차적으로 검사하도록 풀어주고, SWITCH는 애초에 조건 평가가 아니라 값 매칭이라는 더 단순한 문제로 치환해준다. 두 함수의 차이를 '순차평가 vs 값 매칭'이라는 원리로 이해해두면, 다음에 다중분기 수식을 마주쳤을 때 어떤 함수를 골라야 할지 훨씬 빠르게 판단할 수 있다. 다음 글에서는 조건부 집계의 대표 함수인 SUMIF와 SUMIFS가 내부적으로 조건 배열을 어떻게 다루는지 살펴본다.