Arrayformula와 같은 역할을 하는 Map 함수, 용도의 차이는?

shimshim 2024. 7. 23. 23:13

 

구글 시트에서 Arrayformula 함수를 사용하다 보면 유사한 함수를 쉽게 접할 수 있다. 
바로 Map함수다. Map 함수도 Arrayformula 함수와 마찬가지로 일정 행 또는 열에 같은 수식을 나열하는 역할을 한다. 
처음엔 '아 비슷한 함수구나' 하고 그때 그때 떠오르는 함수로 활용할 수 있지만 
계속 사용하다 보면 어떤 차이점이 있는지 의문점이 들 때가 있다.
의문점을 넘어 어떤 상황이 각각 더 효율적인가? 를 떠올리게 된다면 이 글을 참고해 보면 좋겠다.

 

 

단순연산

 

단순 연산에 대한 결과를 출력하고자 할 때, Arrayformula 함수의 속도가 더 빠르다. 
그 이유는 예시를 통해 살펴 보자.

예시)

=ARRAYFORMULA(A2:A100 * 2)
=MAP(A2:A100, LAMBDA(a, a * 2))

Arrayformula 함수는 A2:A100 배열에 *2 연산을 한번에 처리하도록 설계 되어 있어 반복 작업을 최소화 할 수 있다.

 

반면 Map 함수는 'Lambda' 함수가 호출 되어 각 행마다 개별적인 처리가 이루어져 계속해서 함수 호출을 해야 한다. 
예시를 보면 A2부터 A100까지의 각 행에 Lambda함수를 호출하여 2를 곱하는 셈이다.

 

복잡연산

Arrayformula 함수는 복잡한 연산에 불리하다. 기본 조건문 적용은 가능하나, 조건문 속의 조건문, 즉 이중 조건문 등의 로직을 설계할 때 arrayformula 함수는 한계가 있다.

 

예시)

=MAP(A2:A100, B2:B100, C2:C100, LAMBDA(a, b, c, IF(a > 10, IF(b < 5, a * b + c, a - b + c), IF(c > 20, a / b + c, a * b - c) ) ))


이럴 때 적합한 함수가 바로 Map함수다. Map함수는 수식 내에 Lambda함수를 사용할 수 있어 다중 조건문 로직 설계도 가능하다.


따라서 단순 연산으로 주어진 배열을 입력할 때는 Arrayformula, 이중 이상의 조건문을 활용한 수식을 출력할 때는 Map 함수가 적절하다.