들어가기 전에
엑셀의 람다(LAMBDA) 함수는 반복 수식 작업을 줄이고 재사용 가능 함수 작성에 도움을 주며, 어떤 함수와 함께 사용되는지가 관건입니다. 기본 수식보다 읽기 쉽고 유지관리 쉬운 구조로 복잡한 계산을 간결하게 만드는 방법에 대해 소개합니다.
이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.
- 원문: Beyond basic Excel formulas: Why LAMBDA helper functions are the new normal
- URL: https://www.howtogeek.com/microsoft-excel-lambda-helper-functions/
LAMBDA 함수 기본
LAMBDA 함수는 즉석에서 작성하는 사용자 지정 수식이라고 생각하면 됩니다. A2*0.15와 같은 고정 셀 참조 대신 매개변수를 정의하는 방식입니다.
=LAMBDA(x, x * 0.15)
- x: 함수가 처리할 값을 나타내는 매개변수
- x * 0.15: Excel이 해당 매개변수에 대해 수행하도록 하려는 계산
이 수식 자체만으로는 별다른 기능을 하지 못합니다. 이 논리를 데이터에 적용하려면 드라이버가 필요합니다. 바로 이 부분에서 LAMBDA 헬퍼 함수가 중요한 역할을 합니다.
Excel 표는 결과값이 표에 표시되는 것을 지원하지 않습니다 . MAP이나 SCAN과 같은 동적 배열 함수를 표 안에 넣으면 #SPILL! 오류가 발생합니다 . 이를 방지하려면 람다 함수는 항상 표준 표에 배치해야 합니다.
이번 실습에서는 T_Gadgets라는 이름의 다음 표를 데이터 소스로 사용하고, 표 옆이나 위에 있는 일반 셀에 수식을 입력하겠습니다.

[참고 자료] 엑셀 SCAN 함수로 누적합계, 누적평균, 월별 누계 완벽 정리
https://www.iexceller.com/MyXls/excellertv/posts/y0351/
엑셀 SCAN 함수 누적합계 & 월별 리셋 공식 (VBA 포함)
단순 SUM은 이제 그만! SCAN 함수로 누적 합계/평균을 한 방에 해결하고, 월이 바뀌면 0부터 다시 시작하는 자동화 공식을 공개합니다. (전 버전 사용 가능)
www.iexceller.com
반복자(MAP, BYROW, BYCOL): 각 셀, 행 또는 열에 논리 적용
반복자(Iterator)는 테이블 데이터를 순회하며 각 항목에 LAMBDA 로직을 적용합니다.
MAP: 모든 셀에 논리 적용
| 구문 | =MAP(배열,LAMBDA(매개변수,계산)) |
| 목표 | T_Gadgets 테이블의 각 행에 대한 매출을 계산하고 동시에 10% 할인을 적용하려고 합니다. |
| 좋은 점 | 전체 계산 과정이 한 곳에 집중되어 있습니다. 따라서 결과 내의 개별 행을 덮어쓸 수 없으므로 논리 보안이 강화됩니다. |
다음은 F2 셀에 입력해야 할 MAP 함수입니다.
=MAP(T_Gadgets[Units], T_Gadgets[Price], LAMBDA(u, p, u*p*0.9))
- 배열: T_Gadgets[Units], T_Gadgets[Price] 는 처리하려는 열
- 매개변수: u, p 는 각 행의 단일 단위와 가격을 나타내는 매개변수
- 계산: u*p*0.9 는 두 값을 곱하고 10% 할인 적용

MAP 함수를 사용하여 병렬 열을 결합하고, BYROW 함수를 사용하여 각 레코드를 단일 데이터 묶음으로 처리합니다.
BYROW: 모든 행에 대한 결과를 가져옴
| 구문 | =BYROW(array,LAMBDA(row,calculation)) |
| 목표 | T_Gadgets 테이블에서 단위와 가격을 가로 방향으로 곱하여 각 행(일)의 총 수익을 구하려고 합니다. |
| 좋은 점 | 수백 개의 행에 걸쳐 수식을 관리하는 대신, 단일 셀에 하나의 수식을 입력하고 해당 수식이 아래로 자동 적용되도록 하여 데이터 세트 전체의 일관성을 유지할 수 있습니다. |
F2 셀에는 다음 수식을 입력합니다.
=BYROW(T_Gadgets[[Units]:[Price]], LAMBDA(row, PRODUCT(row)))
- 배열: T_Gadgets[[Units]:[Price]] 는 두 열을 모두 포함하는 범위
- 매개변수 ` row`는 데이터의 전체 가로 행을 나타냄
- 계산: PRODUCT(row)는 해당 행에 있는 모든 값을 곱함

BYCOL: 모든 열에 대한 결과를 가져옴
| 구문 | =BYCOL(배열,LAMBDA(열,계산)) |
| 목표 | T_Gadgets 테이블의 Units 및 Price 열에서 최댓값을 찾는 단일 수식을 원합니다. |
| 좋은 점 | 표 바로 위 행에 BYCOL 함수를 사용하면 헤더 요약을 만들 수 있습니다. 이렇게 하면 방대한 표의 맨 아래에 있는 합계 행까지 스크롤할 필요가 없어지고, 보안 및 일관성을 위해 모든 로직을 단일 셀에 압축할 수 있습니다. |
A1 셀에 다음 수식을 입력합니다.
=BYCOL(T_Gadgets[#Data], LAMBDA(col, IFERROR(MAX(col), "")))
- 배열: T_Gadgets[#Data] 는 수식이 가로 방향으로 확장될 수 있도록 함. 새 열을 추가하면 수식이 이를 감지하고 오른쪽으로 더 확장됨.
- 매개변수 col: 전체 세로 열을 나타냄
- 계산: IFERROR(MAX(col),"")는 각 열에서 가장 큰 값을 찾음. AND 및 OR과 같이 텍스트 열에 대해 오류를 발생시키는 함수를 사용할 때는 IFERROR 래퍼가 필수적

MAX나 SUM 같은 함수는 텍스트 열에서 종종 0을 반환합니다. 수식의 정렬을 유지하면서 이 값을 숨기 려면 0이 포함된 셀을 선택하고 [셀 서식] 대화 상자 (Ctrl+1)에서 사용자 지정 숫자 서식인 ;;; (세 개의 세미콜론)을 사용하여 셀의 기능은 유지하면서 값을 숨깁니다.
누적기 (SCAN 및 REDUCE): 진행 중 결과 생성
누적기(Accumulator)는 메모리를 보유하여 테이블을 처리하는 동안 누적 계산을 수행합니다.
SCAN: 누적 합계 또는 누적 개수 생성
| 구문 | =SCAN(초기값,배열,LAMBDA(누적기,값,계산)) |
| 목표 | T_Gadgets 테이블의 Units 열에 대한 일일 누적 합계를 확인하여 재고 소진 추이를 추적하고 싶습니다. |
| 좋은 점 | `=SUM($C$2:C2)`와 같은 기존의 누적 합계 계산 방식은 행을 정렬하거나 삭제하면 오류가 발생할 수 있습니다. SCAN 함수는 모든 계산을 하나의 셀에 유지하므로 구조적 변경에 영향을 받지 않습니다. |
이 예에서 F2 셀에는 다음 수식을 입력합니다.
=SCAN(0,T_Gadgets[Units], LAMBDA(acc, val, acc + val))
- 초기값(0): 카운트가 시작되는 지점
- 배열(T_Gadgets[Units]): 스캔할 열
- 매개변수(acc, val): 이전 합계를 저장하는 누적값과 현재 셀의 값을 메모리에 추가하는 매개변수
- 계산(acc+val): 메모리를 업데이트하는 논리

REDUCE: 배열을 하나의 최종 값으로 축소
| 구문 | =REDUCE(initial_value,array,LAMBDA(accumulator,value,calculation)) |
| 목표 | T_Gadgets 테이블의 수량(Units)을 합산하고 싶지만, 대량 주문(10개 이상 판매)에 대해서만 합산하고 싶습니다. |
| 좋은 점 | REDUCE는 여러 단계로 이루어진 로직을 단일 셀로 압축하여 중첩된 SUMIF, 보조 열 또는 여러 중간 단계를 방지합니다. |
F2 셀에는 다음 수식을 입력합니다.
=REDUCE(0, T_Gadgets[Units], LAMBDA(acc, val, IF(val>10, acc+val, acc)))
- 초기값(0): 합계 계산의 시작점
- 배열(T_Gadgets[Units]): 축소되는 열
- 매개변수(acc, val): 함수 실행 중에 생성되는 최종 누적 결과와 현재 셀의 값이 누적값에 더해지는 값을 나타냄.
- 계산(IF(val>10,acc+val,acc)): 합계가 10을 초과하는 경우에만 값을 합계에 더함

마치며
이상에서 소개한 LAMBDA 기반 함수를 활용하면 엑셀 통합 문서가 단순한 계산기에서 프로그래밍 언어로 공식적으로 인정받는 복잡한 개발 환경으로 탈바꿈합니다. 전체 데이터 세트에서 반복적으로 수행하는 계산을 찾아 단일 셀 함수로 통합해 보세요. 다시는 예전 방식으로 돌아가고 싶지 않을 겁니다.
'Excel' 카테고리의 다른 글
| 데이터 분석가를 위한 강력한 Excel 함수 10가지 (0) | 2026.07.03 |
|---|---|
| 꼭 알아야 할 엑셀 수식에서 해시 기호(#)의 역할 (0) | 2026.07.01 |
| [파워툴스 업데이트] 현재 파일 삭제 기능 추가 (버전 4.6.0) (0) | 2026.06.30 |
| 엑셀 코파일럿으로 스프레드시트 작업을 더 쉽게 만드는 6가지 방법 (0) | 2026.06.26 |
| 오류로 인해 엑셀 수식이 깨질 때 대처 함수 (0) | 2026.06.22 |
