Excel

여러 시트에서 원하는 값 구해서 합하기(2)

별동산 2023. 12. 27. 09:48
반응형

이번에는 Lambda 함수를 이용해 사용자 지정 함수를 만들어 수식을 간단하게 만들어 보겠습니다.

 

1. Lambda 함수

 

가. 구문

Lambda함수의 구문은

=LAMBDA([parameter1, parameter2, …,] calculation)   

로서

인수들을 입력받고, 이를 이용한 결괏값을 돌려주는 함수입니다.

 

나. 사용법

(1) 수식 입력줄에서 사용하는 방법

수식 입력줄에서 Lambda함수 안에 변수(들)를  쓰고, 변수에 해당하는 값은 끝 부분의 괄호 안에 입력합니다.

 

아래는 제곱값을 구하는 Lambda 식인데, x값으로 2를 대입해서 2의 제곱값이 4가 반환됩니다.

=LAMBDA(x,x^2)(2)

(2) 이름관리자를 이용한 방법

 

(가) 이름 정의

이름관리자를 이용해 이름과 Lambda 함수를 이용해 수식을 변수를 이용해 입력하면 사용자 지정 함수가 돼서 보다 편리하게 사용할 수 있습니다.

 

위 제곱값을 구하는 것을 이름관리자를 이용하면 아래와 같이 입력합니다.

이름은 '제곱'으로 했고, 참조 대상에 =lambda(x,x^2)이라고 입력하고 확인 버튼을 누릅니다.

 

그러면 제곱이란 이름이 생성되는데 닫기 버튼을 누릅니다.

 

 

(나) 사용자 지정 함수 사용

이제 엑셀의 함수처럼 =제곱(2)라고 입력하면 됩니다.

2의 제곱값 4가 구해졌습니다.

 

이것이 첫 번째 방법보다 훨씬 편합니다.

특히 수식이 복잡하다면 더욱 편리하게 사용할 수 있습니다.

 

 

2. Lambda 함수를 이용한 최종 생산일과 이에 해당하는 생산량 구하기

 

가. 최종 생산일 구하기

이름은 '최종생산일'로 했고,

 

참조 대상에 수식을 입력했는데, 호기 이름에 해당하는 시트명을 shtname으로 변수명을 지정해서 입력했습니다.

=LAMBDA(shtname,MAX(INDEX(INDIRECT("'"&shtname&"'!A:A"),MAX(IF((INDIRECT("'"&shtname&"'!K:K")<>"")*(INDIRECT("'"&shtname&"'!P:P")>0),ROW(INDIRECT("'"&shtname&"'!P:P")))))))

 

수식의 의미는 Lot No가 공백이 아니고 생산량이 0보다 큰 행의 최댓값을 구해서 그에 해당하는 날짜를 A열에서 가져오는 것입니다.

 

"'"&shtname&"'!A:A"라고 입력하면 인식을 못해서 indirect함수를 이용해 값을 가져오도록 했습니다.

 

 

나. 최종 생산일의 총 생산량 구하기

이름은 '주야간생산량'이라고 했고,

수식은 =LAMBDA(shtname,daynight,SUMIFS(INDIRECT("'"&shtname&"'!P:P"),INDIRECT("'"&shtname&"'!A:A"),요약장표!J$1,INDIRECT("'"&shtname&"'!c:c"),daynight))입니다.

 

여기서는 변수가 shtname뿐만 아니라 주야간을 받을 변수 daynight가 추가됐습니다.

수식의 의미는 날짜와 주, 야간 구분에 해당하는 생산량의 합계를 구하는 것인데 SumIfs함수를 이용해서 합계를 구했습니다.

 

나머지는 최종 생산일을 구하는 것과 유사합니다.

 

최종 완성된 파일은 아래와 같습니다. 

여러시트의 조건에 맞는 합계수량 구하기(2편 완성).xlsx
0.78MB

 

 

 

다. 이름 변경 시 수식의 함수명도 자동으로 바뀜

함수명을 '주야간생산량'이라고 했는데, 길므로

생산량이라고 이름 관리자에서 수정하면

 

 

수식에서 주야간생산량이 생산량으로 자동으로 바뀝니다. 이것도 편리한 점입니다.

반응형