
엑셀에서 IF 문은 조건에 따라 다른 결과를 반환하는 가장 기본적인 도구로 널리 사용됩니다. 하지만 조건이 복잡해질수록 중첩된 IF 문은 읽기 어렵고, 유지보수와 오류 수정도 쉽지 않아집니다. 다행히 엑셀은 이러한 한계를 극복할 수 있는 강력한 대안 함수들을 여러 가지 제공합니다.
이 글에서는 IF 문을 대체할 수 있는 7가지 엑셀 함수를 소개합니다. 판매 데이터 예시를 통해 각 함수의 수식을 나란히 비교하며 설명하겠습니다.
1. IFS() – 여러 조건을 우아하게 처리
IFS 함수는 여러 조건을 순서대로 평가하고, 처음으로 TRUE가 되는 조건에 해당하는 값을 반환합니다. 길고 디버깅하기 어려운 중첩 IF 문을 대체하는 데 가장 적합한 함수입니다.
구문:
=IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2], ...)
주문 금액을 성과 등급으로 분류해 보겠습니다.
- $10,000 초과 → 우수(Excellent)
- $5,000 ~ $10,000 → 양호(Good)
- $2,000 ~ $5,000 → 보통(Average)
- 그 외 → 목표 미달(Below Target)
IF 방식:
=IF(J2>10000, "Excellent", IF(J2>5000, "Good", IF(J2>2000, "Average", "Below Target")))
IFS 방식:
=IFS(J2>10000, "Excellent", J2>5000, "Good", J2>2000, "Average", TRUE, "Below Target")
IFS 함수는 '조건'과 '조건이 참일 때 반환할 값'의 쌍으로 이루어진 인수를 받습니다. 마지막의 TRUE 인수는 앞의 어떤 조건에도 해당하지 않는 경우를 처리하는 포괄적(catch-all) 역할을 합니다.

장점:
- 헷갈리는 괄호 중첩이 없습니다.
- 읽고 관리하기 쉽습니다.
- 조건의 우선순위가 명확하게 드러납니다.
2. SWITCH() – 정확한 값 비교에 최적
하나의 값을 여러 개의 정확한 후보값과 비교해야 할 때, SWITCH 함수가 여러 개의 IF 문보다 훨씬 효율적입니다.
구문:
=SWITCH(expression, value1, result1, [value2, result2], ..., [default])
판매 지역별 담당 매니저를 배정해 보겠습니다.
- 동부(East): Morgan Smith
- 서부(West): Taylor Wong
- 북부(North): Jamie Rodriguez
- 남부(South): Casey Johnson
IF 방식:
=IF(E2="East", "Morgan Smith", IF(E2="West", "Taylor Wong", IF(E2="North", "Jamie Rodriguez", IF(E2="South", "Casey Johnson", "Unassigned"))))
SWITCH 방식:
=SWITCH(E2, "East", "Morgan Smith", "West", "Taylor Wong", "North", "Jamie Rodriguez", "South", "Casey Johnson", "Unassigned")
- SWITCH는 하나의 표현식을 값 목록과 차례로 비교하여, 첫 번째로 일치하는 값에 해당하는 결과를 반환합니다.
- 마지막 인수는 일치하는 값이 없을 때 사용되는 기본값입니다.

중첩 IF 문과 비교했을 때 SWITCH 방식이 얼마나 깔끔하고 읽기 쉬운지 확인할 수 있습니다.
장점:
- 간결하고 직관적입니다.
- 항목 추가나 순서 변경이 쉽습니다.
- 중첩이 필요하지 않습니다.
3. CHOOSE() – 위치 번호로 목록에서 선택
미리 정의된 목록에서 숫자 위치(인덱스)를 기준으로 항목을 선택해야 하는 로직이라면, CHOOSE 함수가 중첩 IF보다 훨씬 단순합니다.
구문:
=CHOOSE(index_num, value1, [value2], ...)
분기 번호를 해당 분기의 첫 달로 변환해 보겠습니다.
IF 방식:
=IF(F2=1, "January", IF(F2=2, "April", IF(F2=3, "July", IF(F2=4, "October", "Invalid Quarter"))))
CHOOSE 방식:
=CHOOSE(F2, "January", "April", "July", "October")
- CHOOSE는 위치 번호에 따라 목록에서 값을 반환합니다.
- IF와 달리 조건을 평가하지 않고, 인덱스 값에 맞는 항목을 단순히 선택합니다.

분기 번호에 따라 분기별 판매 목표를 배정할 때도 활용할 수 있습니다.
=CHOOSE(F2, 50000, 75000, 60000, 90000)
이 수식은 분기마다 서로 다른 판매 목표를 자동으로 지정합니다.

장점:
- 선택지가 3개 이상일 때 더 짧고 명확합니다.
- 논리 오류 가능성이 줄어듭니다.
- 업데이트나 재정렬이 쉽습니다.
4. XLOOKUP – 테이블 기반 의사결정
범위나 조회 테이블을 기준으로 결정을 내려야 한다면, LOOKUP 계열 함수가 중첩 IF보다 강력합니다. XLOOKUP 함수는 특정 값을 검색하여 다른 배열에서 그에 상응하는 결과를 반환합니다.
구문:
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
제품 카테고리별 수수료 구조를 만들어 보겠습니다.
- 전자제품(Electronics): 5%
- 가구(Furniture): 7%
- 기타(Other): 4%
IF 방식:
=IF(C2="Electronics", J2*0.05, IF(C2="Furniture", J2*0.07, J2*0.04))
XLOOKUP 방식 (최신 Excel):
=J2*XLOOKUP(C2, $P$2:$P$4, $Q$2:$Q$4, 0.04)
이 수식은 카테고리에 따라 수수료율을 조회한 뒤, 주문 금액에 곱해 판매 수수료를 계산합니다.

장점:
- 데이터 테이블과 함께 사용하기 좋습니다.
- 목록이 길어질수록 가독성이 뛰어납니다.
- 유연합니다(기본값 폴백 설정 가능).
5. AND()/OR() – 여러 조건 결합
여러 조건을 모두 충족해야 하거나(AND), 하나라도 충족하면 되는 경우(OR)에는 이 두 함수가 수식을 크게 단순화해 줍니다. AND 함수는 모든 조건이 참일 때 TRUE를 반환하고, OR 함수는 하나라도 참이면 TRUE를 반환합니다.
구문:
=AND(logical1, [logical2], ...)
=OR(logical1, [logical2], ...)
다음 조건을 모두 만족하는 주문을 '우선 처리(Priority)'로 표시해 보겠습니다.
- 전자제품 주문이면서, AND
- 주문 금액이 $5,000 초과이면서, AND
- 상태가 처리 중(Processing)인 경우
IF 방식:
=IF(C2="Electronics", IF(J2>5000, IF(K2="Processing", "Priority", "Normal"), "Normal"), "Normal")
AND 방식:
=IF(AND(C2="Electronics", J2>5000, K2="Processing"), "Priority", "Normal")
모든 조건이 TRUE일 때만 우선 처리로 표시되며, 논리 구조가 한눈에 들어옵니다.

이번에는 추가 할인 대상 주문을 찾아보겠습니다. 다음 중 하나라도 해당하면 됩니다.
- 서부(West) 지역 주문이거나, OR
- 주문 수량이 10개 초과이거나, OR
- 현재 할인율이 0%인 경우
OR 방식:
=IF(OR(E2="West", G2>10, I2=0), "Eligible for Discount", "Not Eligible")
조건이 많아질수록 이 방식의 논리가 더 명확하고 관리하기 쉽다는 장점이 드러납니다.

장점:
- 논리 표현식이 깔끔해집니다.
- 조건 수정이 용이합니다.
- IF, FILTER 등 다른 함수 안에서도 잘 작동합니다.
6. MIN()/MAX() – 범위 제약 조건 간소화
두 숫자를 비교해 상한이나 하한을 적용할 때는 MIN/MAX 함수를 사용하면 조건 분기가 필요 없습니다. MIN 함수는 범위에서 가장 작은 값을, MAX 함수는 가장 큰 값을 반환합니다.
구문:
=MIN(number1, [number2], ...)
=MAX(number1, [number2], ...)
다음과 같은 정책을 구현해 보겠습니다.
- 모든 제품의 최소 주문 수량은 5개.
- 모든 제품의 최대 주문 수량은 20개.
- 범위를 벗어난 주문은 조정 필요.
IF 방식:
=IF(G2<5, 5, IF(G2>20, 20, G2))
MIN/MAX 방식:
중첩 IF 없이도 값이 5~20 사이에 있도록 보장할 수 있습니다.

다음은 할인 정책 예시입니다.
- 주문에 기본 할인율을 적용합니다.
- 할인 금액은 비율과 관계없이 최대 $1,500까지로 제한합니다.
- 최종 가격은 $500 미만으로 내려가지 않도록 합니다.
이 제약 조건을 적용한 최종 가격을 계산해 봅시다.
IF 방식:
=IF(J2-((J2*I2)/100)<500, 500, IF((J2*I2)/100>1500, J2-1500, J2-((J2*I2)/100)))
MIN/MAX 방식:
=MAX(500, J2-MIN(1500, J2*I2/100))
중첩 IF 문보다 훨씬 간결하고 이해하기 쉽습니다.

장점:
- 간결하고 신뢰할 수 있습니다.
- 상한·하한 처리 및 가격 로직에 이상적입니다.
7. FILTER() – 동적 조건부 결과 (Excel 365 이상)
FILTER 함수는 지정한 기준을 충족하는 값을 반환하는 강력한 함수로, 여러 조건을 검사하는 복잡한 IF 문을 효과적으로 대체할 수 있습니다.
구문:
=FILTER(array, include, [if_empty])
판매 데이터에서 동적 보고서를 만들어 보겠습니다. 금액이 $5,000를 넘는 모든 전자제품 주문을 찾아야 합니다.
IF 방식 (단일 행 기준):
=IF(AND(C2="Electronics", J2>5000), B2, "")
이 수식은 모든 행에 복사해야 하며, 결과가 조각조각 나뉘어 표시됩니다.
FILTER 방식:
=FILTER(B2:B13, (C2:C13="Electronics")*(J2:J13>5000), "No matching products")
이 수식은 전자제품 카테고리에서 조건에 맞는 제품들을 한 번에 걸러내어 반환합니다.

FILTER 함수는 여러 조건을 결합하여 일치하는 모든 레코드를 반환할 수 있습니다. 복잡한 IF 로직 없이 동적인 조건 기반 보고서를 만들기에 이상적이며, 여러 기준으로 데이터를 필터링하고 표시해야 하는 데이터 분석 작업에서 특히 강력한 힘을 발휘합니다.
결론
IF 문은 유연하지만, 항상 가장 효율적인 해결책은 아닙니다. IFS, SWITCH, CHOOSE, XLOOKUP, AND/OR, MIN/MAX, FILTER 같은 함수들은 IF 함수의 한계를 극복해 줍니다. 상황에 맞는 함수를 선택하면 수식이 더 짧고 읽기 쉬워지며, 유지보수성과 스프레드시트 전체의 성능도 눈에 띄게 향상됩니다. 각 함수의 강점을 익혀 두면 어떤 조건부 로직이든 더 전문적으로 처리할 수 있습니다.