Microsoft Excel에서 LAMBDA 도우미 함수를 사용하는 방법
엑셀의 LAMBDA 도우미 함수는 미래지만, 어떤 함수를 선택할지 아는 것이 진짜 도전입니다. 이것은 함수를 작업에 맞게 선택하고 마침내 스스로 생각하는 스프레드시트를 만드는 데 도움이 되는 빠른 안내서입니다.
이 문서에서는 Excel for Microsoft 365, 웹용 Excel, 최신 버전의 Excel 모바일 및 태블릿 앱에서 사용할 수 있는 다섯 가지 반복기 및 누산기 도우미 함수에 대해 다룹니다. SCAN 함수는 Excel 2024에서도 사용할 수 있습니다. 문서에서는 다른 역할을 수행하는 두 가지 도우미 함수인 MAKEARRAY(생성기)와 ISOMITTED(논리 검사기)는 다루지 않습니다.
엔진: 30초 LAMBDA 복습
LAMBDA를 마치 즉석에서 작성하는 사용자 정의 수식이라고 생각해 보세요—A2*0.15와 같은 고정 셀 참조 대신 매개변수를 정의합니다:
=LAMBDA(x,x*0.15)어디 :
- x는 함수가 처리할 값을 나타내는 매개변수입니다.
- x*0.15는 Excel이 해당 매개변수에 대해 수행하기를 원하는 계산입니다.
그 자체로 이 수식은 별로 효과가 없습니다; 이 논리를 가져다 데이터를 적용할 드라이버가 필요합니다. 바로 그때 LAMBDA 도우미 함수가 등장합니다.
엑셀 표는 흘러내리는(분산된) 결과를 지원하지 않습니다. MAP이나 SCAN과 같은 동적 배열 수식을 그 안에 놓으려고 하면 #SPILL! 오류가 발생합니다. 이를 피하려면 항상 LAMBDA 도우미 함수를 표준 그리드에 배치하세요.
이번 실행에서는 데이터 소스로 T_Gadgets라는 이름의 다음 표를 사용하고, 그 옆이나 위에 일반 셀에 수식을 입력할 것입니다.
이터레이터(MAP, BYROW, BYCOL): 모든 셀, 행, 또는 열에 논리를 적용하기
이터레이터는 테이블 데이터를 순회하면서 각 항목에 LAMBDA 로직을 적용합니다.
MAP: 모든 셀에 논리를 적용하세요
문법 | =MAP(array,LAMBDA(매개변수,계산)) |
|---|---|
목적 | 각 행의 수익을 계산하고 동시에 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(배열,LAMBDA(행,계산)) |
|---|---|
목적 | 각 행(일)의 총 수익을 얻기 위해 T_Gadgets에서 Units와 Price를 가로로 곱하고 싶습니다. |
이점 |
수백 개의 행에 걸쳐 수식을 관리하는 대신, 하나의 셀에서 하나의 수식을 관리하고 아래로 흘러 내려가도록 하여 데이터셋 전체의 일관성을 보장합니다. |
셀 F2에 대한 BYROW 수식은 다음과 같습니다:
=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 수식입니다:
=BYCOL(T_Gadgets[#Data],LAMBDA(col,IFERROR(MAX(col),"")))위치 :
- 배열: T_Gadgets[#Data]는 수식이 수평으로 확장될 수 있도록 보장합니다. 새 열을 추가하면 수식이 이를 감지하고 오른쪽으로 더 확장됩니다.
- 매개변수: col은 전체 세로 열을 나타냅니다.
- 계산: IFERROR(MAX(col),"")는 각 열에서 가장 높은 값을 찾습니다. IFERROR 래퍼는 AND 및 OR과 같이 텍스트 열에서 오류를 발생시키는 함수를 사용할 때 필수적입니다.
MAX와 SUM과 같은 함수는 텍스트 열에 대해 종종 0을 반환합니다. 수식의 정렬을 깨뜨리지 않고 이 값을 숨기려면, 0이 있는 셀을 선택하고 셀 서식 대화 상자(Ctrl+1)에서 사용자 지정 숫자 형식 `;;;`(세 개의 세미콜론)를 사용하여 셀을 기능적으로 유지하면서 값을 보이지 않게 만드세요.
누적기(SCAN 및 REDUCE): 진행하면서 결과 구축하기
누적기는 메모리를 가지고 있어 테이블을 이동하면서 합계를 계속 유지합니다.
스캔: 누적 합계 또는 누적 카운트 생성
문법 | =SCAN(초기값,배열,LAMBDA(누적값,값,계산)) |
|---|---|
목적 | 재고 감소를 추적하기 위해 T_Gadgets의 Units 열 일일 누적 합계를 보고 싶습니다. |
이점 | 전통적인 누적 합계 예를 들어 =SUM($C$2:C2)는 행을 정렬하거나 삭제하면 깨질 수 있습니다. SCAN은 논리를 하나의 셀에 유지하여 구조적 변경에 영향을 받지 않게 합니다. |
이 예제에서 셀 F2의 SCAN 수식은 다음과 같습니다:
=SCAN(0,T_Gadgets[Units],LAMBDA(acc,val,acc+val))어디 :
- 초기 값: 0은 계산이 시작되는 곳입니다.
- 배열: T_Gadgets[Units]는 당신이 검색하고 있는 열입니다.
- 매개변수: acc,val는 매개변수입니다—이전 합계를 기억하는 누산기와 메모리에 더해지는 현재 셀의 값입니다.
- 계산: acc+val은 메모리를 업데이트하는 논리입니다.
REDUCE: 배열을 하나의 최종 값으로 축소하기
문법 | =REDUCE(초기_값,배열,LAMBDA(누적값,값,계산)) |
|---|---|
목적 | 당신은 T_Gadgets의 단위 수를 합산하고 싶지만, 단지 대량 주문(10개 이상의 판매)에 대해서만 하고 싶습니다. |
이점 | REDUCE는 다단계 로직을 하나의 셀로 압축하여 중첩된 SUMIF, 보조 열 또는 여러 중간 단계를 피합니다. |
셀 F2에 이 REDUCE 수식을 입력하세요:
=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 도우미 함수를 필요로 하나요?
이 간단한 참조를 사용하여 어떤 기능이 당신의 작업에 적합한지 결정하세요:
만약 당신이 원한다면... | 사용하다... | 전체 튜토리얼 |
|---|---|---|
모든 셀에 논리를 적용하세요 | 지도 | 링크 |
각 행마다 결과를 얻기 | 행별 | 링크 |
모든 열에 대한 결과를 얻으세요 | BYCOL | 링크 |
누적 합계를 생성하세요 | 스캔 | 링크 |
요약된 값을 얻다 | 줄이다 | 링크 |
이러한 LAMBDA 기반 함수를 활용하면 Excel 통합 문서를 정교한 계산기에서 공식적으로 프로그래밍 언어로 간주되는 복잡한 개발 환경으로 바꿀 수 있습니다. 그렇다면, 무엇을 기다리고 계신가요? 현재 전체 데이터 집합에서 반복하고 있는 계산을 찾아 오늘 단일 셀 함수로 중앙 집중화하세요—그러면 예전 방식으로 돌아갈 일은 없을 것입니다.






