
IF · IFS · SWITCH · AND · OR로 조건식 끝! (다중 조건·중첩 최소화·성능/가독성 1분 컷)
편집자가 실제 Excel 365에서 재현·검증했으며, 초안 정리에 AI 도구를 보조적으로 활용했습니다.
문법 & 핵심 개념
| 함수 | 형식 | 포인트 |
|---|---|---|
| IF | =IF(조건, 값_if_true, 값_if_false) | 이분 분기. 복합 조건은 AND/OR 사용 |
| IFS | =IFS(조건1,결과1, 조건2,결과2, …) | 위→아래 순서 평가, 첫 참 결과 반환 |
| SWITCH | =SWITCH(식, 값1,결과1, 값2,결과2, …, [기본]) | 정해진 값→라벨 매핑에 최적 |
| AND/OR | =AND(조건1,조건2,…) / =OR(…) | 복합 조건 생성 |
불리언(BOOLEAN) 규칙: TRUE=1, FALSE=0. 수식 곱셈(*)은 AND, 덧셈(+)은 OR로 동작합니다(FILTER/SUMPRODUCT와 궁합).
IF + AND/OR 기본
출결·점수 동시 조건
=IF(AND(Score>=90, Absence=0), "A", "B~F")
VIP 또는 최근 구매자
=IF(OR(VIP="Y", TODAY()-LastPurchase<=30), "우선고객", "일반")
빈칸/0 방어
=IF(OR(A2="", A2=0), "", A2*Rate)
IFS — 중첩 최소화
학점 라벨링
=IFS(Score>=90,"A", Score>=80,"B", Score>=70,"C", TRUE,"D")
상태 코드 → 문구
=IFS(Status="NEW","신규", Status="PENDING","진행중", Status="DONE","완료", TRUE,"기타")
SWITCH — 값 매핑
상태코드 5종 매핑(기본값 포함)
=SWITCH(Status, "N","신규","P","대기","R","반려","D","완료","U","보류","기타")
요일 번호 → 한글 요일
=SWITCH(WEEKDAY(Date,2),1,"월",2,"화",3,"수",4,"목",5,"금",6,"토",7,"일")
실무 패턴 12가지
① 가격 구간화(티어)
=IFS(Price<10000,"Entry", Price<50000,"Standard", Price<100000,"Pro", TRUE,"Elite")
② 배송비 정책(무료/유료)
=IF(Amount>=Threshold, 0, Fee)
③ 반품 리스크 라벨(텍스트 포함)
=IF(OR(ISNUMBER(SEARCH("defect", LOWER(Desc))), ReturnDays>30), "High","Normal")
④ 휴먼에러 방어: 0으로 나눔
=IF(Den=0, "", Num/Den)
⑤ 다중조건 + 스필(동적 배열)
=IF((Region="Seoul")*(Month=EOMONTH(TODAY(),0)), "Y","N")
⑥ KPI 신호등(이모지/기호)
=SWITCH(TRUE, Rate>=0.95,"🟢", Rate>=0.9,"🟡", TRUE,"🔴")
⑦ 결측치 대체(평균/중앙값)
=IF(Value="", AVERAGEIF(Value,"<>",Value), Value)
⑧ 고객 등급 + 혜택 문구
=SWITCH(Tier,"GOLD","무료배송","SILVER","쿠폰10%","BRONZE","적립2%","일반")
⑨ 텍스트 카테고리 + 조건
=IF(AND(Category="Keyboard", Sales>=1000000), "히트", "일반")
⑩ 영업일 기준 SLA 초과
=IF(WORKDAY(Start,N,,Holiday)<=Due,"On-time","Delay")
⑪ 점수대별 포인트
=VSTACK({"구간","포인트"}, {">=90","100" ; "80~89","70" ; "70~79","40" ; "<70","10"})
⑫ IFS ↔ XLOOKUP 전환(규칙 표로 치환)
// 규칙표 Cutline:Grade (하한표)
=XLOOKUP(Score, Cutline, Grade, , -1)
LET로 가독성/성능 향상
=LET(s, Score, a, Absence,
IF(OR(s="", a=""), "", IFS(s>=90,"A", s>=80,"B", s>=70,"C", TRUE,"D")))
TIP 동일 참조(예: Score)를 LET 변수로 캐싱하면 큰 표에서 속도가 빨라지고 디버깅이 쉬워집니다.
자주 하는 실수 & 체크
- 텍스트 “TRUE”/”FALSE”를 값으로 오해 — 따옴표 있으면 문자열입니다.
- 비교 연산 우선순위 —
A<B<C형태는 금지.AND(A<B, B<C)로. - 빈칸·0·NA 혼동 — 정책을 정해 IF의 첫 분기에 방어 로직을 둡니다.
- 긴 중첩 — IFS/SWITCH 또는 XLOOKUP(규칙표)로 치환해 유지보수성 향상.
요약
| 목표 | 대표 공식 |
|---|---|
| 복합 조건 분기 | IF(AND/OR(...), 값1, 값2) |
| 다중 구간/라벨 | IFS(조건1,라벨1, ... , TRUE,기본) |
| 값 매핑 | SWITCH(식, 값,라벨, …, 기본) |
| 규칙표 기반 | XLOOKUP(점수, Cutline, Grade, , -1) |
| 성능/가독성 | LET(변수들, …) |