
IF 함수 다중조건 완벽 가이드: AND/OR, IFS, FILTER까지 한 번에
IF 함수 다중조건을 깔끔하게 처리하고 싶다면 이 가이드를 따라오세요. 초반 3분 Quick Fix로 즉시 적용 가능한 공식을 제시하고, 이어서 논리 원리, 실무 표 예제, 365 전용 최적화(LET/FILTER), 주의점과 Troubleshooting까지 한 번에 정리했습니다.
Quick Fix: 3분 컷 다중조건
- 동시에 모두 만족해야 하면
AND를 사용합니다.
=IF(AND(A2="영업", B2>=80, C2="신규"), "보너스", "대상 아님") - 하나라도 만족하면 통과면
OR을 사용합니다.
=IF(OR(A2="VIP", B2>=100, C2="전략"), "우선 처리", "일반") - 조건이 계단식(점수→등급)이면
IFS가 가장 읽기 쉽습니다(365 권장).
=IFS(B2>=90,"A", B2>=80,"B", B2>=70,"C", TRUE, "D") - 우선순위가 바뀌기 쉬운 정책이라면
LET으로 가독성/관리성 향상(365).
=LET(점수,B2, 신규,(C2="신규"), IF(AND(점수>=85, 신규),"보너스","일반"))
팁: 수식 중간값 검증은 수식 탭 > 수식 검사 > 수식 평가 또는 부분 선택 후 F9로 즉시 확인하세요.
왜 헷갈릴까? — 논리의 원리와 우선순위
AND / OR 진리표(간단)
- AND: 모든 조건이 TRUE일 때만 TRUE
- OR: 조건 중 하나라도 TRUE면 TRUE
엑셀은 TRUE=1, FALSE=0 처럼 취급되는 맥락이 많습니다. 숫자·텍스트·빈값이 섞이면 예기치 않은 결과가 날 수 있어, 비교 연산자(=, >, <=)를 명시하고 공백/에러는 IFERROR, ISBLANK로 정리하세요.
중첩 IF vs. IFS vs. SWITCH
- 중첩 IF: 범용이지만 길어지면 가독성↓, 유지보수 비용↑
- IFS(365): 다단 조건을 위에서 아래로 읽기 쉬움
- SWITCH(365): 한 “키값”에 여러 경우 분기일 때 깔끔
실무 예제 1: 보너스 판정(AND + OR 혼합)
시나리오: 아래 표에서 영업 부서이면서 점수 ≥ 85이고, 신규거나 전략이면 “보너스” 지급.
| 부서(A) | 점수(B) | 상태(C) | 보너스(D) |
|---|---|---|---|
| 영업 | 90 | 신규 | |
| 영업 | 88 | 일반 | |
| 영업 | 82 | 전략 | |
| 지원 | 95 | 신규 | |
| 영업 | 87 | 전략 |
D2에 다음 수식을 넣고 아래로 복사:
=IF( AND(A2="영업", B2>=85, OR(C2="신규", C2="전략")), "보너스", "대상 아님")
예상 결과
- 1행: 보너스 (영업 ∧ 90≥85 ∧ (신규∨전략))
- 2행: 대상 아님 (상태가 일반)
- 3행: 대상 아님 (점수가 82로 미달)
- 4행: 대상 아님 (부서가 지원)
- 5행: 보너스 (영업 ∧ 87≥85 ∧ 전략)
구조적 참조(테이블)로 더 깔끔하게
범위를 표로 변환: 데이터 범위 선택 → Ctrl+T → “머리글 포함” 체크.
=IF( AND([@부서]="영업", [@점수]>=85, OR([@상태]="신규", [@상태]="전략") ), "보너스","대상 아님")
LET로 유지보수성 향상(365)
=LET(
부서,[@부서],
점수,[@점수],
상태,[@상태],
IF(AND(부서="영업", 점수>=85, OR(상태="신규", 상태="전략")), "보너스","대상 아님")
)
실무 예제 2: 점수→등급 (IFS vs. 중첩 IF vs. SWITCH)
정책: 90↑=A, 80–89=B, 70–79=C, 그 외 D.
IFS(가독성 최고, 365)
=IFS(B2>=90,"A", B2>=80,"B", B2>=70,"C", TRUE,"D")
중첩 IF(범용, 가독성은 주석/들여쓰기로 보완)
=IF(B2>=90,"A",
IF(B2>=80,"B",
IF(B2>=70,"C","D")))
SWITCH(구간이 아닌 ‘정확한 값’ 분기일 때)
=SWITCH(C2, "신규","N", "전략","S", "일반","G", "기타")
365 고급: IF 없이도 쉬워지는 조합
FILTER로 조건에 맞는 행만 추출
영업 & 점수≥85 & (신규∨전략)을 별도 탭으로 뽑아 모니터링:
=FILTER(A2:C100, (A2:A100="영업") * (B2:B100>=85) * ((C2:C100="신규")+(C2:C100="전략")) )
LET + FILTER: 가독성/성능/관리성 3박자
=LET(
부서,A2:A100, 점수,B2:B100, 상태,C2:C100,
영업여부,(부서="영업"),
점수충족,(점수>=85),
상태충족,(상태="신규")+(상태="전략"),
FILTER(A2:C100, 영업여부*점수충족*상태충족)
)
대체 방법 / 주의사항 / 체크리스트
- 빈칸/오타: 비교 전
TRIM,UPPER등으로 표준화. - 에러 안전망: 최종 IF 바깥에
IFERROR( … , "" )로 출력 미관 유지. - 테이블(구조적 참조): 범위가 늘어나는 보고서에 필수.
- 수식 평가(F9): 부분 범위/논리식 선택 후 F9로 중간값 검증.
- 정책 변경 잦으면:
LET,IFS,SWITCH로 규칙만 바꾸기 쉬운 형태로. - 성능: 대용량에서는 중복 계산 최소화(공통 논리 LET 변수화), 필요 시 계산 옵션 수동.
Troubleshooting
| 증상 | 원인 | 해결 |
|---|---|---|
| 조건이 맞는데 “대상 아님” | 공백/오타/앞뒤 스페이스 | TRIM, CLEAN 적용 또는 데이터 유효성(목록) 강제 |
| #VALUE! / #N/A 발생 | 데이터형 혼재, 참조 범위 불일치 | 범위 길이 통일, IFERROR로 예외 처리 |
| 수식 너무 길고 관리 어려움 | 중첩 IF 난립 | IFS / SWITCH / LET로 재작성 |
| 복사 시 참조 깨짐 | 절대/상대 참조 혼용 | $ 고정 또는 테이블 구조적 참조 사용 |
| 필터링 보고서가 느림 | 중복 계산 다수 | LET로 공통 논리 캐시, 365는 FILTER로 단일 추출 |
마무리 & 다음 추천
오늘 배운 IF 함수 다중조건의 핵심은 “AND/OR로 논리를 명시하고, IFS/LET/FILTER로 유지보수성과 가독성을 끌어올린다”입니다. 연습할 다음 주제로 아래 글을 추천합니다.