본문 바로가기
Tool

google spreadsheet에서의 arrayformula의 한계

by progrpsk 2018. 10. 3.

최근 구글 google spreadsheet에서 함수를 이용하여 데이터를 받고,

받은 데이터를 함수로 계산하여 반환해주는 작업을 하게 되었다.


처음에는 google spreadsheet의 script를 써서 내가 함수를 직접 작성해 보았다.

하지만 해당 script의 한계는 값이 변동되는 것을 감지 하지 못하여 업데이트가 안 된다는 것이다.

(수동으로 계속해서 함수를 저장해야 그때 값이 업데이트 되는것을 확인하였다.)

이벤트를 사용하여 값 변동을 감지하여 리턴값을 업데이트 할 수 있다고도 나오지만

그 방법은 복잡한 작업이었다.


그래서 그냥 엑셀의 기본 함수를 사용하여 진행하게 되었다.

문제는 자동으로 데이터가 외부로부터 들어오면 함수를 넣은 영역도 자동계산되어 채워지길 바랬는데,
(이렇게 되면 자동화 시스템이 됨으로 내가 손 댈 부분이 없다.)

그것을 구현하는 것은 매우 힘들었다.


그렇게 찾다가 찾다가 발견하게 된 함수가 바로 arrayformula이다.

해당 함수는 나에게 마법처럼 다가왔지만, 써보고 나니 그 한계를 깨닫게 되었다.

arrayformula의 가장 큰 한계는 변동되는 셀의 index값을 받지 못한다는 것이다.


즉, 한마디로 말해서 index 값을 받지 못하니 복잡한 함수를 작성한다고 했을때

row 마다 변동되어져야 할 값이 변동하지 못하여 계속해서 똑같은 출력만 하는 것이다.


이 문제를 다른 함수를 써서 꼼수로 해결할 수 있는것 같다만 그 방법도 매우 복잡하고,

함수에 적용했을때 제대로 적용되리란 보장이 없었다.


한마디로 arrayformula는 허울 좋은 함수일 뿐이고, 실제로 간단한 계산 정도많을 자동을 반환하는 정도다.

만약 그 안에 함수가 들어가면 그 마져도 array로 반환을 안 한다.

꼭 if를 써서 range 비교를 해야만 함수를 써도 주르륵 들어간다.

하지만 결국엔 업데이트 되는 index 값을 받아올 수 없으니 복잡한 함수에 arrayformula를 쓰는 것은 불가능하고 자동화도 불가능하게 되었다.


혹여 이것외에 신박한 방법을 알고 계신 분들은 개인적으로 연락주시면 감사합니다.


댓글