
IFS 함수 업그레이드: SWITCH·XLOOKUP·LET·LAMBDA로 “조건 분기”를 유지보수 가능하게
실무에서 IFS를 쓰다 보면 어느 날 갑자기 수식이 “사람이 읽을 수 없는 길이”가 됩니다. 조건이 늘어나고, 규칙이 바뀌고, 같은 로직을 여러 시트에 복사하면서 가독성·유지보수·성능이 동시에 무너져요. 이 글은 IFS 함수 업그레이드를 목표로, 상황별로 더 좋은 선택지(SWITCH, XLOOKUP 조회표, LET, LAMBDA)를 바로 갈아타는 루트로 정리합니다.
Quick Fix: IFS를 “지금 당장” 깔끔하게 업그레이드하는 5분 루트
1) IFS 마지막에 기본값(디폴트)부터 넣기
=IFS(
[@점수]>=90,"A",
[@점수]>=80,"B",
[@점수]>=70,"C",
TRUE,"D"
)
2) “코드 → 라벨” 매핑이면 SWITCH로 변경
=SWITCH([@채널],
"W","WEB",
"S","STORE",
"A","APP",
"ETC"
)
3) 규칙이 자주 바뀌면 “조회표(XLOOKUP)”로 테이블화
=XLOOKUP([@채널], 규칙표[코드], 규칙표[라벨], "ETC")
4) LET으로 중간 계산을 “변수”처럼 이름 붙이기
=LET(
amt, [@금액],
vip, [@고객]="VIP",
IFS(vip, "우선",
amt>=200000, "우선",
TRUE, "일반")
)
5) 같은 로직을 여러 곳에서 쓰면 LAMBDA로 “내 함수” 만들기
배송비, 수수료, 등급 산정 같은 로직은 파일 여기저기 복사됩니다. LAMBDA로 사용자 함수를 만들어두면 복붙을 끝낼 수 있어요.
IFS의 한계가 터지는 순간 3가지 (가독성·유지보수·성능)
- 가독성 붕괴: 조건이 늘수록 검증이 어려워짐
- 유지보수 붕괴: 규칙이 바뀔 때마다 수식 수정
- 성능 붕괴: 조건마다 무거운 계산을 반복
업그레이드 1 — 값 매핑은 SWITCH가 더 짧다
채널코드(W/S/A…), 상태코드(100/200/300…)처럼 “정확히 일치 매핑”이면 SWITCH가 더 짧고 기본값도 넣기 쉬워요.
예시: 채널 코드 라벨링
=SWITCH([@채널],
"W","WEB",
"S","STORE",
"A","APP",
"C","CS",
"ETC"
)
업그레이드 2 — 규칙이 자주 바뀌면 XLOOKUP “조회표”로 바꿔라
정책이 바뀌는 게 정상이라면, 수식에 규칙을 박지 말고 표(테이블)에 규칙을 저장하고 XLOOKUP으로 불러오세요.
업그레이드 3 — LET로 수식을 분해하면 읽기/속도가 같이 좋아진다
=LET(
customer, [@고객],
amt, [@금액],
note, [@메모],
isVIP, customer="VIP",
isHigh, amt>=200000,
isUrgent, ISNUMBER(SEARCH("urgent", note)),
IF(isVIP+isHigh+isUrgent>0, "우선", "일반")
)
업그레이드 4 — LAMBDA로 “내 함수”를 만들면 복붙 지옥이 끝난다
- 수식 탭 → 이름 관리자
- 새로 만들기
- 이름:
SHIP_FEE - 참조 대상(Refers to): 아래 수식 붙여넣기
=LAMBDA(region, amount,
LET(
r, region,
a, amount,
IF(r="국내",
IF(a>=50000, 0, 3000),
IF(a>=200000, 0, 7000)
)
)
)
등록 후 사용:
=SHIP_FEE([@구분], [@금액])
실무 예제: 등급·채널·배송비·프로모션을 한 파일에서 통일하는 설계
아래 샘플 데이터를 그대로 만들면, 업그레이드 루트를 한 번에 재현할 수 있어요. 엑셀에서 입력 후 Ctrl + T로 표로 바꾸세요(표 이름: Orders).
| 주문ID | 구분 | 고객 | 금액 | 점수 | 채널 | 메모 |
|---|---|---|---|---|---|---|
| O-001 | 국내 | 일반 | 45000 | 92 | W | |
| O-002 | 해외 | VIP | 20000 | 81 | A | urgent |
| O-003 | 국내 | VIP | 120000 | 76 | S | |
| O-004 | 국내 | 일반 | 35000 | 65 | W | |
| O-005 | 해외 | 일반 | 220000 | 88 | A | |
| O-006 | 국내 | VIP | 51000 | 95 | W | urgent |
| O-007 | 국내 | 일반 | 8000 | 55 | S | |
| O-008 | 해외 | VIP | 99000 | 73 | W | |
| O-009 | 국내 | 일반 | 150000 | 84 | A | |
| O-010 | 국내 | VIP | 30000 | 60 | S |
Troubleshooting
| 증상 | 원인 | 해결 |
|---|---|---|
| IFS가 가끔 빈칸/에러 | 디폴트(TRUE)가 없음 | 마지막에 TRUE,"기본값" 추가 |
| 조건이 많아 수정이 무서움 | 규칙이 수식에 박힘 | 규칙을 표로 분리하고 XLOOKUP |
| 수식이 길고 느림 | 중복 계산 | LET로 중간값 캐시 |
| 시트마다 로직이 다름 | 복붙 분기 | LAMBDA로 단일 함수화 |
| 코드 라벨링 수식이 김 | 정확히 일치 매핑을 IFS로 처리 | SWITCH로 변경 |
관련 글 (ExcelJump 내부링크)
- IF 다중조건(AND/OR/IFS, XLOOKUP·FILTER 연계) 실무 가이드
- XLOOKUP 함수 완전정복: 실무 조회 공식
- Excel IF function 끝까지: LET·LAMBDA로 정리
- Excel INDEX MATCH 사용법: 안 깨지는 조회식
- 엑셀 함수 A~Z 무료 가이드