
엑셀 LET · LAMBDA 성능 최적화 & 모듈화 가이드
환경: Excel 365 기준. 초안 정리에 AI 도구를 보조적으로 활용했지만 모든 수식은 직접 재현했습니다.
연계 가이드(내부 링크 7+)
1) 왜 LET·LAMBDA인가
- 중복계산 제거 — 동일 계산을 변수에 담아 1회만 실행
- 가독성↑ — 논리 단계를 이름으로 표현
- 모듈화 — LAMBDA로 워크북 전역 재사용
// Before
=IFERROR(XLOOKUP(B2, Codes[Code], Codes[Rate]) * C2, 0)
// After (LET)
=LET(rate, XLOOKUP(B2, Codes[Code], Codes[Rate]), qty, C2, IFERROR(rate*qty, 0))
2) 성능 패턴 6가지(복붙용)
/* ① 반복 조회 캐시 */
=LET(keys, Orders[Code],
rate, XLOOKUP(keys, Codes[Code], Codes[Rate]),
rate)
/* ② 중간 스필 없애기 (스필→변수) */
=LET(f, FILTER(Tbl, Tbl[Region]="Seoul"),
s, SUMIFS(f[Amount], f[Month], EOMONTH(TODAY(),0)),
s)
/* ③ 조건 분기 테이블화 (SWITCH) */
=LET(g, [@Grade], SWITCH(g,"A",1.0,"B",0.9,"C",0.8,0.7))
/* ④ 범위 한 번만 정렬 */
=LET(s, SORT(Tbl, XMATCH("Amount", Tbl[#Headers]), -1),
TAKE(s, 10))
/* ⑤ TEXT 파이프라인 캐시 */
=LET(t, TRIM(SUBSTITUTE([@Text],CHAR(160)," ")),
parts, TEXTSPLIT(t, ","),
UNIQUE(parts))
/* ⑥ 반복 계산을 LAMBDA로 캡슐화 */
=LAMBDA(qty,price, IFERROR(qty*price,0))(C2,D2)
3) 재사용 LAMBDA 12개 템플릿(이름 관리자에 저장)
① RUNNING_TOTAL(range)
=LAMBDA(rng, SCAN(0, rng, LAMBDA(a,v, a+v)))
② NTH_OCCURRENCE(text, find, n)
=LAMBDA(t,f,n, TEXTAFTER(t, f, n))
③ MULTISPLIT(text, delimiters)
=LAMBDA(t,del, TEXTSPLIT(t, del))
④ CLEAN_TEXT(text)
=LAMBDA(t, LOWER(TRIM(SUBSTITUTE(t,CHAR(160)," "))))
⑤ UNIQUE_COUNT(range)
=LAMBDA(rng, ROWS(UNIQUE(rng)))
⑥ FISCAL_MONTH(date, startMonth)
=LAMBDA(d, sm, MOD(MONTH(d)-sm+12,12)+1)
⑦ MATCH_OR_BLANK(lookup, range)
=LAMBDA(x, rng, IFERROR(XMATCH(x, rng), ""))
⑧ SUMVISIBLE(range)
=LAMBDA(r, SUBTOTAL(109, r))
⑨ REGEX_SIM(mock) — 간단 패턴 대체
=LAMBDA(t, SUBSTITUTE(SUBSTITUTE(t," "," "),"-",""))
⑩ TOPN(table, n, byColName, [desc])
=LAMBDA(tbl, n, col, desc,
TAKE(SORT(tbl, XMATCH(col, tbl[#Headers]), IF(desc, -1, 1)), n))
⑪ MERGE_HEADERS(T1,T2)
=LAMBDA(t1,t2, VSTACK(TAKE(t1,1), DROP(t1,1), DROP(t2,1)))
⑫ SAFE_DIV(num, den)
=LAMBDA(a,b, IFERROR(a/b, 0))
4) 미니 벤치마크 팁
- 수식 길이↓ LET 변수로 핵심만 남기기
- 정렬/필터 캐시 SORT/FILTER 결과는 변수로 보관
- 표(Table) 구조적 참조로 열 이동에도 안전
- 계산 옵션 대형 파일은 수동 재계산(F9)로 실험
5) 오류·유지보수 체크리스트
- LAMBDA 인수 이름은 명확하게(영문 소문자 추천)
- 이름 관리자에서 버전 번호를 접미사로 관리(예:
TOPN_v2) - 스필 충돌(#SPILL!) 시 범위 비우기/병합 해제
- IFERROR로 사용자 친화 메시지 제공
이제 위 LAMBDA를 VSTACK/HSTACK, TEXTSPLIT, COUNTIFS와 조합해서 업무 템플릿을 고도화하세요.