본문 바로가기

엑셀

엑셀 LET LAMBDA 함수 사용법 - 수식 안에서 변수 선언하기

반응형

복잡한 수식에서 같은 계산이 여러 번 반복되면 수식이 길어지고 느려져요.
LET 함수를 사용하면 수식 안에서 중간 결과에 이름을 붙이고 재사용할 수 있습니다.

 

LAMBDA는 사용자 정의 함수를 수식으로 만드는 기능이에요.
반복적으로 사용하는 수식 패턴을 함수처럼 등록해서 재사용할 수 있습니다.

 

사용 가능 버전: Excel 365 전용

LET 함수 - 수식 안에서 변수 만들기

=LET(이름1, 값1, 이름2, 값2, ..., 계산식)

 

이름에 값을 할당하고, 마지막 인수인 계산식에서 그 이름을 사용해요.

 

기본 예제

=LET(
  매출, B2,
  원가, C2,
  이익, 매출-원가,
  이익/매출
)

 

매출=B2, 원가=C2, 이익=매출-원가를 정의하고, 마지막에 이익률(이익/매출)을 계산해요.
이렇게 하면 같은 계산(B2-C2)을 반복하지 않아도 됩니다.

LET이 필요한 상황

LET 없이:

=IF(VLOOKUP(A2,D:E,2,0)>300, VLOOKUP(A2,D:E,2,0)*1.1, VLOOKUP(A2,D:E,2,0)*0.9)

VLOOKUP이 3번 실행돼요. 느리고 읽기 어렵습니다.

 

LET 사용:

=LET(
  매출, VLOOKUP(A2,D:E,2,0),
  IF(매출>300, 매출*1.1, 매출*0.9)
)

VLOOKUP이 1번만 실행되고, 수식도 간결해져요.

LET 성능 이점

같은 계산이 수식 안에서 N번 반복되면, LET 없이는 N번 실행돼요.
LET으로 이름을 붙이면 1번만 계산하고 결과를 재사용합니다.
대량 데이터에서 VLOOKUP, INDEX+MATCH 같은 무거운 함수를 반복할 때 체감 차이가 생겨요.

LET 중첩 활용

변수를 여러 개 선언하고 이전 변수를 다음 변수에서 참조할 수 있어요.

=LET(
  총매출, SUM(B2:B100),
  목표, 10000,
  달성률, 총매출/목표,
  등급, IF(달성률>=1,"달성",IF(달성률>=0.8,"양호","미달")),
  등급&" ("&TEXT(달성률,"0%")&")"
)

결과 예: "양호 (85%)"

LAMBDA 함수 - 사용자 정의 함수 만들기

=LAMBDA(매개변수1, 매개변수2, ..., 계산식)

 

LAMBDA는 매개변수를 받아서 계산 결과를 반환하는 함수를 만들어요.
이름 관리자에 등록하면 일반 함수처럼 사용할 수 있습니다.

LAMBDA 등록 순서

예: 세후 금액을 계산하는 함수 만들기 (세율 10%)

 

  1. [수식] → [이름 관리자] (Ctrl+F3) → [새로 만들기]
  2. 이름: 세후금액
  3. 참조 대상: =LAMBDA(금액, 금액*(1-0.1))
  4. [확인]

 

이제 어디서든 사용 가능:

=세후금액(1000)

결과: 900

LAMBDA 매개변수 여러 개

세율을 외부에서 받는 버전:

이름: 세후계산
참조 대상: =LAMBDA(금액, 세율, 금액*(1-세율))
=세후계산(1000, 0.1)

결과: 900

=세후계산(1000, 0.22)

결과: 780

LAMBDA + LET 조합

LAMBDA 안에서 LET을 사용하면 더 복잡한 로직도 가능해요.

이름: 성과등급
참조 대상: =LAMBDA(매출, 목표,
  LET(
    달성률, 매출/목표,
    IF(달성률>=1.2,"S",IF(달성률>=1,"A",IF(달성률>=0.8,"B","C")))
  )
)
=성과등급(450, 400)

결과: "A" (달성률 112.5%)

LAMBDA를 셀에서 직접 사용

이름 관리자에 등록하지 않고, 셀에서 직접 LAMBDA를 호출할 수도 있어요.
MAP, REDUCE, SCAN 같은 배열 함수와 조합할 때 사용합니다.

 

예: MAP 함수와 함께 각 셀에 함수 적용

=MAP(B2:B10, LAMBDA(x, IF(x>=300,"달성","미달")))

B2:B10의 각 값에 대해 LAMBDA를 실행하고 결과 배열을 반환해요.

SEQUENCE 함수 - 연속 숫자/날짜 생성

LAMBDA와 자주 함께 쓰이는 함수예요.

=SEQUENCE(행수, [열수], [시작값], [증가값])

 

=SEQUENCE(10)          → 1~10 세로 배열
=SEQUENCE(5, 1, 0, 2)  → 0,2,4,6,8
=SEQUENCE(12, 1, DATE(2025,1,1), 30)  → 30일 간격 날짜 12개

 

동적 배열로 결과가 자동으로 펼쳐져요 (17편의 스필 개념).

자주 하는 실수 / 주의사항

1. LET의 이름에 공백, 셀 주소 형태 사용 불가

이름 규칙은 20편의 이름 관리자와 동일해요.
"월 매출"(공백), "A1"(셀 주소)은 사용할 수 없습니다.

2. LET의 마지막 인수가 반드시 계산식이어야 함

LET은 이름-값 쌍 뒤에 최종 계산식이 와야 해요.
이름-값만 나열하고 끝내면 오류가 납니다.

3. LAMBDA를 이름 관리자에 등록해야 함수처럼 사용 가능

셀에 =LAMBDA(x, x*2)만 입력하면 #CALC! 오류가 나요.
LAMBDA를 호출하려면 이름 관리자에 등록하거나, MAP/REDUCE 등과 함께 사용해야 합니다.

4. Excel 365 전용

LET, LAMBDA, MAP, SEQUENCE 모두 Excel 365에서만 작동해요.
2019 이하 버전에서는 사용할 수 없습니다.

관련 함수 안내

LAMBDA와 함께 쓰이는 고급 함수: MAP(각 요소에 함수 적용), REDUCE(누적 계산), SCAN(중간 결과 포함 누적), MAKEARRAY(배열 생성), BYROW/BYCOL(행/열 단위 처리).

 

다음 글에서는 SEQUENCE와 RANDARRAY, 그리고 실무에서의 배열 함수 조합 패턴을 다룹니다.

반응형