이번에는 Google SpreadSheet에서 ArrayFormula를 활용하여 Sumif/s 기능을 대체해 보도록 하겠다.
1. ArrayFormula란?
ArrayFormula 함수는 Google Spreadsheet에서만 기능하는데, Google Spreadsheet에서 정보를 확인해보면 "배열 수식에서 여러 행 및 열에 반환된 값을 표시하고, 배열이 아닌 함수에 배열을 사용할 수 있습니다."와 같이 나오는 것을 확인할 수 있다.
배열이란 간단히 말하면, 한 개의 데이터 값이 아닌 여러 개의 데이터 값을 지니는 자료구조 중 하나이다. 그냥 값이 1개가 아니라 여러 개라고 생각하면 편할 것이다.
가장 간단한 예로 아래와 같이 A1:A3 범위 값과 B1:B3 값을 더하기 위해 ArrayFormula를 사용하여 두 개의 범위를 +로 묶어주면 A5:A7범위에 서로 더한 값이 배열로 출력되는 것을 확인할 수 있다.
2. ArrayFormula를 활용한 Sumif/s 가 무슨 관계가 있는걸까?
아래와 같이 J열에 날짜가 있고, V,W,X,Y,Z열에 어떤 값이 있는 데이터를 살펴보자.
J열은 비용이 지불된 날짜이고, V,W,X,Y,Z는 각 비용 값들이다.
내가 하고 싶은 것은 2023-9-20일에 지불된 모든 비용의 합계들이다. 이를 Sumif/s로 처리할 수도 있지만, Arrayformula를 활용해 더 간단하게 처리할 수도 있다.(아래 데이터는 '시트1'에 위치한다)
시트1
아래 그림은 위 시트1 데이터의 J열에 있는 데이터가 날짜 데이터이기 때문에, 대시보드 시트를 하나 따로 만들어 Array Formula로 2023년 9월 20일에 해당하는 배열 데이터를 불러온 것이다. 20203년 9월 20일에 해당하는 데이터는 True, 아닌 데이터는 False로 처리되었다.
헤더(제목)은 제외하고 가져오고자 J2부터 불러왔고, B2에 "2023-09-20" 날짜 값을 넣고 C열에 ArrayFormula를 사용한 것을 보면 모두 True 값을 가져온 것을 볼 수 있다.
=ARRAYFORMULA('시트1'!J2:J=B2)
J열에서 "2023-09-20"과 같은 것은 J2부터 차례대로 True로 불러오고, 그 값이 다른 경우 False로 불러온다.(False 값은 35열부터라 그림에는 빠져있다.)
시트2
ArrayFormula에서는 연산을 수행할 수 있기 때문에, 앞으로 ArrayFormula 연산을 활용해 보도록 하자.
아래 그림은 위에서 불러온 TRUE/FALSE열을 ArrayFormula 안에서 V열과 곱한 것이다.