구글 시트를 DB처럼 쓰는 방법에 대한 자세한 내용은 아래 블로그들을 참조하시면 좋습니다. 저같은 얼치기완 다르게 정말 잘 정리된 글이고, 다른 포스트들도 매우 도움이 됩니다. 절대로 제가 설명하기 귀찮아서 그런 건 아닙니다.

3-1에서는 범위를 병합해서 새로운 범위를 만드는 법, FILTER함수의 사용법을 배웁니다. 3-2에서는 QUERY함수를 배웁니다.

http://mindthelog.com/2016/12/google-sheets-analytics-database/ 특히 여기서는 설명하지 않는 TRANSPOSE(REPT())의 사용법이 자세히 설명되어 있습니다.

https://www.benlcollin s.com/spreadsheets/query-dates/ QUERY 함수 에서 사용하는 SQL문법을 상세하게 설명합니다.

범위의 병합

범위면 범위지 범위의 병합은 뭐냐. 사실 1장에서 이미 해봤던 겁니다. { }를 쓰는 건데요, { } 안에 여러 범위를 섞어서 쓸 수 있습니다. 구글 시트의 함수는 범위(배열)을 반환하는 경우가 많다 보니, 이 배열들을 결합시켜서 새로운 배열을 만드는 방법을 쓰면 편한 경우도 종종 생깁니다.

한 개 이상의 배열을 위아래로 이어 붙이려면 세미콜론( ; )을, 좌우로 이어 붙이려면 콤마( , )를 씁니다. 콤마로 열을 구분하는 CSV파일을 생각하면 이해하기 쉽습니다. 물론 위아래로 이어 붙일 때는 각 범위의 열의 개수가, 좌우로 이어 붙일 때는 서로간의 행의 개수가 같아야 합니다. 아니면 아래와 같은 오류가 뜹니다.

함수 ARRAY_ROW 매개변수 2에서 행 크기가 일치하지 않습니다(필요: 2. 실제: 3).

잘 이해가 안 되면 직접 해 봅니다. 눈으로 백 번 봐봤자 소용없습니다. 눈으로 봐서 잘 할 수 있는 거면 제가 지금 마크 저커버그입니다.

왜 내가 이제 와서 구글시트를 해야 합니다_final

예제파일의 표에서 구분과 항목을 위아래로 붙여보고( {B5:B7;C5:C7} ), 좌우로 붙여봅시다 ( {B5:B7,C5:C7} )

<aside> <img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/27b825e1-96b8-4faf-9e54-ad969c334cf1/fx.png" alt="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/27b825e1-96b8-4faf-9e54-ad969c334cf1/fx.png" width="40px" /> [예제3-1] {B5:B7 ; C5:C7}
{B5:B7 , C5:C7}

</aside>

결과는 아래와 같습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5e76f881-5d38-4d98-873a-42e7e372c32a/Untitled.png

근데 신기한 걸로 끝나면 안됩니다. 이딴 걸 어디에 쓸까요? VLOOKUP에서 열 순서가 섞여있거나(key 값이 첫 열이 아니라 중간에 섞여 있거나) 여러 데이터셋을 통합할 때 씁니다. 너무 커서 가져오기 힘든 IMPORTRANGE를 필요한 열들만 잘라서 불러오는 데에도 쓸 수 있습니다. 예를 들어, VLOOKUP( 참조값, {B1:B , A1:A}, 2, 0) ) 같이 쓰면 키값이 B열에 있어서 VLOOKUP대신 INDEX(MATCH())를 써야 했던 지난 날을 날려 버릴 수 있습니다. 즉, 범위의 병합은 여러 데이터를 조합해서 범위로 만들어 주는 방법입니다.

여기서 잠깐, 아까 우리가 1장에서 그룹과 ID를 가져오기 위해서 똑같은 범위에 조건만 달랐던 VLOOKUP 함수를 두 번 썼잖아요. 그런데 아까 어떤 함수를 쓰면 배열을 조건으로 던져줄 수 있다고 했거든요. 바로 ARRAYFORMULA입니다. 만약, 3번째 열, 6번째 열이라는 조건을 배열로 던져줄 수 있다면 왠지 수식을 한 번만 적어도 될 것 같습니다.

해 봅시다. VLOOKUP의 index에 배열을 넣어 보는 겁니다. 수식을 하나 줄이기 위해서입니다! VLOOKUP(A1, 범위,1,0)VLOOKUP(A1, 범위,2,0)VLOOKUP(A1, 범위,{1,2},0)로 써보는 거지요. 1장 IMPORTRANGE에서 적었던 함수를 ARRAYFORMULA(VLOOKUP($D$14:$D$21, IMPORTRANGE("1Z_i03d6Yj4kc2lNWPQUu3lblQJypIjO1MoopDp7ku4g", "Team!A2:J"),**{3,6}**,0) )로 수정해 줍니다.

<aside> <img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/27b825e1-96b8-4faf-9e54-ad969c334cf1/fx.png" alt="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/27b825e1-96b8-4faf-9e54-ad969c334cf1/fx.png" width="40px" /> [예제3-2] ARRAYFORMULA(VLOOKUP(D14:D21, IMPORTRANGE("1Z_i03d6Yj4kc2lNWPQUu3lblQJypIjO1MoopDp7ku4g", "Team!A2:J"),{3,6},0) )

</aside>