엑셀 LET · LAMBDA 성능 최적화 & 모듈화 가이드 — 같은 계산 한 번만! 재사용 함수 12개

엑셀 LET·LAMBDA — 중복계산 제거로 성능 최적화, 재사용 함수 12개, 실물에 가까운 꽁이가 노트북을 가리키는 썸네일
엑셀 LET · LAMBDA 성능 최적화 & 모듈화 가이드 — 같은 계산 한 번만! 재사용 함수 12개

엑셀 LET · LAMBDA 성능 최적화 & 모듈화 가이드

환경: Excel 365 기준. 초안 정리에 AI 도구를 보조적으로 활용했지만 모든 수식은 직접 재현했습니다.

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와 조합해서 업무 템플릿을 고도화하세요.


Leave a Reply

Your email address will not be published. Required fields are marked *