Excel

Lambda 함수를 이용한 일정 간격의 값 합계 구하기

별동산 2023. 3. 23. 08:04
반응형

1. Lambda 함수


가. 정의


매개변수들을 나열하고, 그 매개변수들을 이용한 수식을 입력한 다음, 매개변수의 값을 입력받아 수식의 결괏값을 반환합니다. Let함수의 경우는 변수와 값의 쌍으로 이뤄지는데, Lambda함수는 매개변수와 매개변수를 이용한 수식만을 정의하고 값은 따로 입력받는 것이 다른 점입니다.
 

Microsoft 365용 Excel Mac용 Microsoft 365용 Excel 웹용 Excel


나. 구문


=LAMBDA([parameter1, parameter2, ...,] 계산식)    
- parameter(매개변수)는 변수명뿐만 아니라 셀 참조도 될 수 있습니다.
 


다. 장점과 단점


- 이름 관리자를 이용해 L ambda함수식에 이름을 할당하면 엑셀 함수처럼 사용할 수 있습니다.
- Let함수와 달리 단일 수식뿐만 아니라 통합문서 전체에 적용 가능합니다.
- 사용자 정의 함수는 엑셀 추가 기능(*.xlam 또는 *.xla) 파일에 저장하면 어떤 엑셀 파일에도 적용가능한데, Lambda함수는 통합 문서로 제한되는 한계가 있습니다.
 
Lambda함수에 대한 보다 자세한 설명은 아래 글 2번을 참고 바랍니다.
https://lsw3210.tistory.com/entry/%EC%88%98%EC%8B%9D%EC%9D%84-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EB%A7%8C%EB%93%A4%EA%B8%B02-%EC%9D%B4%EB%A6%84%EA%B4%80%EB%A6%AC%EC%9E%90%EC%99%80-Lambda-%ED%95%A8%EC%88%98
 
 


2. Lambda함수를 이용해 일정한 간격으로 된 값의 합계 구하기

 
(방법 1)  셀에 Lambda 식 만들기

sum_interval(lambda).xlsx
0.01MB

 

 


Lambda에 매개변수와 수식을 입력하고 매개변수에 대한 값을 입력받는 식으로 입력합니다.
 
다시 말해
①먼저 sum_by_col시트의  B3셀을 선택한 다음

매개변수로 계산 범위인 calc_range와 간격 interval을 입력하고,
 수식은 매개변수를 이용해
SUM(IF(MOD(COLUMN(calc_range),2)=MOD(COLUMN(OFFSET(calc_range,0,0,1,1)),2),calc_range))
라고 입력하고,
④ 매개변수의 값으로 D3:N3와 2를 입력합니다.

 
이렇게 하면 매번 이렇게 긴 수식을 입력해야 하는 단점이 있습니다.
 
물론 B3셀의 채우기 핸들을 끌어서 C4셀까지 채우면 쉽게 수식을 입력할 수 있습니다.

 

(방법 2) 이름관리자 이용하기

 


가. 가로 방향 합계 구하는 Lambda 식 입력

 


수식 탭의 이름 관리자를 클릭한 다음 새로 만들기 버튼을 누릅니다.

 
그러면 '새 이름' 창이 열리는데, 이름에는 sum_interval이라고 입력하고,
적용 범위는 통합 문서 그대로 두고,
설명에는 "일정한 간격으로 된 값의 합계를 구해주는데, 범위와 간격 값을 입력해야 한다"라고 쓰고,
참조 대상에는 B3셀의 Lambda 식을 복사해서 붙여 넣고 매개변수에 대한 값 입력 부분인 (D3:N3,2)는 지우고, 확인 버튼을 누릅니다.

 

(입력이 완료된 화면)

 

그러면 이름 관리자 목록에 sum_interval이 표시됩니다. 닫기 버튼을 누릅니다.

 
이제 B3셀에 sum_interval(d3:n3,2)라고 입력하고 엔터 키를 누르면 쉽게 일정한 간격으로 떨어진 값의 합계를 구할 수 있습니다.

 
위와 마찬가지로 B3셀의 채우기 핸들을 끌어 C4셀까지 수식을 채울 수 있습니다.
 

 

나. 가로, 세로 방향 합계를 모두 구하는 Lambda 식으로 변경

 

 

이름 관리자의 참조 대상을 아래와 같은 Lambda 식으로 바꾸면
=LAMBDA(calc_range,interval,IF(ROWS(calc_range)>1,SUM(IF(MOD(ROW(calc_range),2)=MOD(ROW(OFFSET(calc_range,0,0,1,1)),2),calc_range)),SUM(IF(MOD(COLUMN(calc_range),2)=MOD(COLUMN(OFFSET(calc_range,0,0,1,1)),2),calc_range))))
 
가로 방향, 세로 방향 모두 적용한 Lambda식이 됩니다.
 
① 먼저 위 Lambda 식을 복사한 다음
② 이름 관리자의 참조 대상을 바꾸기 위해 수식 > 이름 관리자를 클릭한 다음 편집 버튼을 누릅니다.

 
③ 참조 대상을 모두 선택한 다음 Ctrl+V키를 눌러 붙여 넣습니다. 확인 버튼을 누르면

 
④ 아래 참조 대상 입력 칸을 보면 중간에 if(rows... 가 들어간 것이 보입니다. 닫기 버튼을 누르고,

 

이제 sum_by_row시트를 선택한 다음 C2셀에

=sum_interval(C4:C14,2)라고 입력하면 간단하게 수량의 합계 12,864를 구할 수 있습니다.

 

이제 C2셀의 채우기 핸들을 오른쪽, 그리고 아래로 끌어서 D3셀까지 수식을 채우면 완성입니다.

sum_interval(lambda)(final).xlsx
0.01MB

 

반응형