낭패다. 스프레드시트도 점점 어려워진다.
솔직히 말해 스프레드시트는 따옴표 하나와 괄호 하나로 그 의미가 완전히 달라지니 그 점에만 유의하면 된다.
그리고 있는 그대로를 갖다 쓸 때는 복붙이 귀찮다고 따라 적기보다는 무조건 Ctrl + C / Ctrl + V를 꼭 하길 …
내가 하는 말이 뭔지 다들 이해할 것이다.
진짜 이해는 다 했는데 왜 내 시트에서는 실현이 안 되는지 기이한 현상이 발생할 수도 있다. ㅜ
오늘도 시작해보자.
다른 시트의 데이터 불러오기
구글 스프레드시트의 가장 큰 장점은 서로 다른 시트의 데이터를 자유롭게 불러올 수 있다는 점이다.
IMPORTRANGE 함수를 사용하면, 다른 워크 시트의 데이터 호출할 수 있다.
너무 복잡해보이지만 어떻게 하느냐.
=IMPORTRANGE("스프레드시트 URL", "'워크시트 이름'!셀 범위"
범위 문자열을 보면, 표기 구조가 '{워크 시트 이름}'!{셀 범위} 인 걸 확인할 수 있다. 데이터를 불러올 때 필요한 단서는 위에서 알 수 있듯이 세 가지나 되는 것이다. URL, 워크 시트, 셀 범위까지.
데이터를 불러올 때 꽤나 시간이 걸린다. 그래서 뽑아올 때마다 기다려야 해서 맥 빠짐.
진짜 이 함수를 쓰면서 느낀 게 사소한 실수 하나로 이게 데이터가 불러와지지 않을 수가 있다.
https://twitter.com/overflow_meme/status/1321565204912705538
트위터에서 즐기는 Meme Overflow
“Why is this IMPORTRANGE formula not working? https://t.co/mgmOw1KA3M #importrange #googlesheetsformula #googlesheets”
twitter.com
이 사람이 어떻게 실수했는지 보면 스프레드시트가 얼마나 소중히 다뤄줘야 하는지 알 수 있다.
그런데 이 IMPORTRANGE는 해당 모든 원본 데이터를 불러오기 때문에 불필요한 정보가 있을 수도 있다.
흔히 말해 필터링을 하고 싶다면 어떻게 해야할까? 이 때 필요한 게 QUERY문이다.
QUERY문 사용하기
구글 스프레드 시트는 SQL에 사용하는 쿼리문을 그대로 사용할 수 있는 QUERY 함수를 제공한다. QUERY는 데이터베이스에서 특정한 데이터를 보여달라고 요청하는 것이다. 그러나 나는 SQL을 사용해본 적이 없어서 이 QUERY를 하나의 필터로 생각했다. 이 QUERY 함수는 세 개의 입력값을 받는다.
데이터는 쿼리문, 즉 필터를 적용할 데이터를 불러오는 것이고 검색어는 이 셀 범위 안에서 어떤 데이터를 불러올지를 정의한 SQL문을 입력한다. 검색어가 필터가 된다고 생각하면 편했다. 마지막 헤더는 선택한 셀의 범위에서 열 이름이 어느 행까지 있는지 정의하는 것이라, 보통 적지 않으면 첫 번째 행이 이름 열이라고 생각한다.
여기서 아까 배운 IMPORTRANGE 함수를 이용해 데이터를 불러오고, QUERY 함수를 이용해 필요한 데이터만 필터링할 수 있다.
“=QUERY(IMPORTRANGE(”스프레드 시트 URL", "’시트 이름'!A:C"), "SELECT Col1, Col2, Col3")”
위 예시에서 다음과 같이 입력하면, A:C 열의 내용이 모두 불러와진다. 그러면 그냥 IMPORTRANGE 함수랑 똑같은 거 아니야? QUERY 함수의 검색어 값을 보면 “SELECT Col1, Col2, Col3”이 적혀있다. 이는 IMPORTRANGE 함수로 불러온 셀 범위에서 첫 번째 열(Col1), 두 번째 열(Col2), 세 번째 열(Col3)의 데이터를 모두 선택(SELECT)해서 보여주겠다는 의미라서 모두 불러와졌다. 여기서 내가 첫 번째 열만 필요하면 "SELECT Col1"만 입력하면 된다.
필요한 데이터만 호출하기
위에서는 특정 열을 불러올 수 있었는데, 이제 데이터 내에서 조건을 걸어 필터링다운 필터링을 해보자. 어떻게 할까?
사실 아까 쿼리문 내 검색어에서 뒤에 WHERE만 붙이면 된다. 이게 무슨 소리냐면 …
“=QUERY(IMPORTRANGE(”스프레드 시트 URL", "’시트 이름'!A:C"), "SELECT Col1 WHERE …”)
이 WHERE 뒤에 이제 걸어주고 싶은 조건을 걸어주면 된다. SQL을 배웠으면 즉각 알텐데 몰라서 찾아봤다. ㅠ
Col1 CONTAINS 'A' | 'A'를 가지고 있는 것만 (부분일치) |
Col1 STARTS WITH 'A' | 문자열 맨 앞이 'A'로 시작하는 것 |
Col1 ENDS WITH 'A' | 문자열 맨 뒤가 'A'로 끝나는 |
Col1 MATCHES '정규 표현식' | 정규 표현식을 사용한다는 특징 |
Col1 contains 'A' AND Col3 >= 40 | Col1에서 'A'를 가지고 있는 것과 Col3이 40보다 큰 |
CONTAINS의 경우 꽤나 현업에서 자주 쓰인다고 강조 아닌 강조가 되는 함수이기에 기억하기.투두몰 강의 내용을 가져올 수는 없어서 구글링으로 좋은 참고 사이트를 찾았다.
https://m.post.naver.com/viewer/postView.nhn?volumeNo=29666784&memberNo=6454847
참고 바람.
오늘도 공부를 마치고 쉬러 갑니다. 다들 수고 많으셨어요!
위 글은 투두몰 서포터즈 활동의 일환으로 작성된 글입니다.
https://edu.todomall.kr/?utm_source=supporters&utm_medium=contents
투두몰 ㅣ 일잘러의 투두리스트를 훔치다
일잘러의 투두리스트를 훔치다! 오피스 툴을 직접 따라하며 배우고, 과제를 통해 결과물을 만들어요.
edu.todomall.kr
'기타 대외활동 > 투두몰 서포터즈' 카테고리의 다른 글
[구글 앱스 스크립트] 4주차 첫 번째 : 자바스크립트 클래스와 객체 (0) | 2023.07.19 |
---|---|
[구글 앱스 스크립트] 3주차 세 번째 : 자바스크립트 함수 (0) | 2023.07.16 |
[구글 앱스 스크립트] 3주차 첫 번째 : 자바스크립트 제어문 (0) | 2023.07.13 |
[구글 앱스 스크립트] 2주차 두 번째 : 스프레드시트 필수 함수? (0) | 2023.07.09 |
[구글 앱스 스크립트] 2주차 첫 번째 : 자바스크립트 시작 (0) | 2023.07.05 |
댓글