본문으로 건너뛰기
엑셀·구글시트 자동화 실험

엑셀·구글시트 자동화 실험No. 410

구글시트 QUERY 함수 기초 조건에 맞는 행만 모으고 싶을 때

비스듬히 보이는 구글시트 작업 화면

완료된 항목만 별도 목록에 모으는 예시로 구조를 설명합니다. 아래의 항목명과 금액은 수식 설명을 위한 가상 데이터이며, 실제 운영 기록이나 측정 결과를 뜻하지 않습니다.

완료된 항목만 새 목록으로 모으기

원본 데이터는 A열부터 E열까지 사용한다고 가정합니다. A열은 날짜, B열은 분류, C열은 항목명, D열은 금액, E열은 상태입니다. 첫 행에는 각 열의 제목이 있고, 실제 데이터는 다음 행부터 입력하는 구성입니다.

만들려는 결과는 상태가 '완료'인 항목 가운데 금액이 50000 이상인 행을 모은 목록입니다. 결과에는 날짜와 항목명, 금액만 남기고 금액이 큰 순서로 정렬합니다. 분류와 상태는 결과에서 제외하지만, 상태 열은 조건을 판단하는 데 사용합니다.

QUERY는 원본 데이터를 지우거나 옮기는 기능이 아닙니다. 지정한 범위를 읽어 수식이 입력된 셀부터 결과를 펼쳐 놓습니다. 따라서 원본을 유지하면서 다른 영역에서 필요한 목록을 확인하는 용도로 사용합니다.

원본 시트의 필터는 같은 데이터 영역에서 보이는 행을 조절할 때 사용합니다. QUERY는 필요한 열만 골라 별도 영역에 결과를 구성할 때 사용합니다. 결과 목록을 따로 관리하려는 상황인지부터 구분하면 기능을 선택하기 수월합니다.

가로로 나란히 놓인 모니터

짚고 가기

목록 구성 전 확인

  • 필터는 같은 영역에서 표시 조절
  • QUERY는 별도 영역에 결과 구성
  • 금액은 숫자, 상태 글자는 통일

입력 전에는 데이터의 형태도 살핍니다. D열의 금액은 숫자로 입력하고, E열의 상태는 같은 의미라면 같은 글자로 통일합니다. '완료'와 '완료됨'은 서로 다른 값입니다. 셀 끝에 불필요한 공백이 붙어 있어도 원하는 조건에서 빠질 수 있습니다.

수식을 넣을 곳에는 결과가 펼쳐질 여유 공간이 필요합니다. 이번 예시는 세 열을 가져오므로 입력 셀 오른쪽으로 세 열의 공간을 사용합니다. 결과 행 수는 조건에 맞는 데이터에 따라 달라지므로 아래쪽도 비워 둡니다.

가져올 열과 조건을 판단할 열은 달라도 되므로 수식에서 각각 구분합니다.

빈 셀에 넣는 기본 수식

아래 수식은 원본과 같은 시트의 빈 영역에 입력하는 예시입니다. A열부터 E열까지 원본이 있다면 G1처럼 범위가 겹치지 않는 셀을 사용합니다.

=QUERY(A1:E,"select A, C, D where E = '완료' and D >= 50000 order by D desc",1)

실행 순서는 다음과 같이 정리합니다.

  1. A1부터 E열까지 열 제목과 데이터를 입력
  2. G1 오른쪽과 아래쪽의 기존 내용을 확인
  3. G1에 수식을 붙여 넣고 Enter 입력
  4. 결과의 상태 조건과 금액 순서를 원본과 대조

위 수식은 제목 행을 포함한 A1:E를 읽습니다. 마지막의 1은 범위의 맨 위 한 행이 제목이라는 뜻입니다. 이 숫자는 가져올 데이터의 개수나 첫 번째 열을 뜻하지 않습니다.

처음부터 긴 수식을 입력하기 어렵다면 아래처럼 열 선택만 먼저 확인합니다.

=QUERY(A1:E,"select A, C, D",1)

이 수식으로 날짜, 항목명, 금액이 나오는지 확인한 다음 조건과 정렬을 추가합니다. 결과가 예상과 다를 때도 수식을 짧게 줄이면 어느 부분에서 문제가 생겼는지 구분하기 쉽습니다.

가까이서 본 계산기의 버튼과 표시부

하나씩 확인

열 선택부터 확인

  • 날짜·항목명·금액 확인
  • 조건과 정렬 차례로 추가
  • 다른 시트는 첫 인수 변경

다른 시트에 원본이 있다면 첫 번째 인수만 바꿉니다. 시트 이름이 '원본 데이터'라면 다음과 같이 작성합니다.

=QUERY('원본 데이터'!A1:E,"select A, C, D where E = '완료'",1)

시트 이름에 공백이 있으므로 이름을 작은따옴표로 감쌉니다. 조건값인 '완료'에 붙은 작은따옴표와 용도가 다릅니다. 수식을 복사할 때는 따옴표가 장식용 곡선 모양으로 바뀌지 않았는지도 확인합니다.

범위와 조건을 한 줄씩 읽는 방법

QUERY의 기본 구조는 =QUERY(데이터 범위, "질의문", 제목 행 수)입니다. 쉼표로 나뉜 세 부분을 구분하면 긴 수식도 읽기 쉬워집니다. 질의문 안에도 쉼표가 있지만, 큰따옴표 안의 내용은 하나의 인수로 묶입니다.

A1:E는 읽을 데이터 범위입니다. 끝 행을 지정하지 않아 이후 같은 열에 추가한 데이터도 범위에 포함합니다. 반면 A1:E200처럼 끝을 정하면 그다음 행에 입력한 데이터는 읽지 않습니다. 데이터가 늘어나는 방식에 맞춰 선택합니다.

select A, C, D는 결과로 가져올 열과 순서를 정합니다. A, C, D 대신 C, D, A로 적으면 항목명이 먼저 나오고 날짜가 마지막으로 이동합니다. 열 제목에 적힌 '금액'이라는 글자 대신 원본 범위의 열 문자를 사용합니다.

where E = '완료'는 E열의 값이 완료인 행만 남기는 조건입니다. 글자를 비교하므로 작은따옴표로 감쌉니다. and D >= 50000은 금액 조건을 추가합니다. 숫자 비교이므로 50000에는 따옴표나 자릿수 구분 쉼표를 넣지 않습니다.

흐린 종이 뒤로 또렷하게 보이는 파일 꽂이

주의할 점

조건 작성 시 확인

  • 글자 조건은 작은따옴표 사용
  • 숫자는 따옴표·쉼표 없이 입력
  • and는 모든 조건 충족 필요

and는 연결된 조건을 모두 만족하는 행을 고릅니다. 상태가 완료여도 금액이 기준보다 작으면 제외합니다. 금액이 기준 이상이어도 상태가 다른 행은 제외합니다. 둘 중 하나만 만족해도 되는 조건이라면 or를 사용하며, 조건을 섞을 때는 괄호로 묶는 범위를 확인합니다.

order by D desc는 D열을 기준으로 큰 값부터 정렬합니다. 작은 값부터 정렬하려면 desc를 asc로 바꿉니다. 정렬 기준도 결과의 몇 번째 열인지가 아니라 원본의 열 문자를 기준으로 읽습니다.

마지막 인수는 범위의 시작 행과 함께 판단합니다. 제목이 있는 A1:E를 읽으면 1을 사용하고, 제목을 제외한 A2:E부터 읽으면 0을 사용합니다. 제목 행 수를 잘못 적으면 첫 데이터가 제목처럼 처리되거나 제목이 데이터에 섞일 수 있습니다.

조건이 맞지 않을 때는 수식과 함께 원본 셀의 값과 자료형을 확인합니다.

조건을 바꿔 쓰는 방법과 주의할 점

조건값을 수식 안에 직접 적으면 기준을 바꿀 때마다 수식을 수정해야 합니다. 상태 기준을 H1에 입력해 두고 그 셀을 참조하면, 수식 구조를 유지하면서 조건만 바꿔 사용할 수 있습니다.

=QUERY(A1:E,"select A, C, D where E = '"&H1&"' order by D desc",1)

큰따옴표 안의 질의문과 H1 값을 &로 연결하는 방식입니다. H1에 '완료'를 입력하면 해당 상태를 찾습니다. 이 예시는 일반적인 상태 문구를 전제로 하며, 조건값 자체에 따옴표가 들어가면 문자열 구성을 별도로 조정해야 합니다.

금액 기준을 I1에 숫자로 입력한다면 다음처럼 연결합니다.

아래에서 올려다본 큰 서류함

셀로 조건 연결하기

구분상태 조건금액 조건
참조 셀H1I1
비교 방식같은 값기준 이상
작은따옴표사용사용 안 함

=QUERY(A1:E,"select A, C, D where E = '"&H1&"' and D >= "&I1&" order by D desc",1)

문자 조건인 H1 주위에는 질의문용 작은따옴표를 붙이고, 숫자 조건인 I1에는 붙이지 않습니다. 두 셀은 원본 범위 밖에 두며, I1에는 설명 문구 대신 비교할 숫자를 입력합니다.

빈 행을 제외하려면 where C is not null처럼 값이 있는 항목명을 기준으로 조건을 추가합니다. 다만 셀이 완전히 빈 상태인지, 공백 문자가 입력된 상태인지에 따라 결과가 달라질 수 있습니다. 빈칸처럼 보이는 셀도 내용을 확인해야 합니다.

한 열에 숫자와 문자가 섞이는 경우도 주의합니다. QUERY는 열의 자료형을 판단하며, 다른 형식의 일부 값은 빈값으로 취급할 수 있습니다. 숫자처럼 보이는 금액이 결과에서 빠진다면 해당 셀이 문자로 저장되어 있는지 살핍니다.

결과가 펼쳐질 자리에 값이나 병합된 셀이 있으면 배열 확장 오류가 발생할 수 있습니다. 수식이 있는 셀만 확인하지 말고 결과가 차지할 영역까지 확인합니다. 결과 영역의 개별 셀은 직접 수정하지 않고 원본 값이나 수식의 조건을 바꿉니다.

새 행을 추가했는데 목록에 나타나지 않으면 범위의 끝 행, 상태 글자, 금액의 자료형을 차례로 확인합니다. 같은 수식을 여러 곳에 복사할 때는 범위가 이동했는지도 확인하고, 고정이 필요하면 $A$1:$E처럼 절대 참조를 사용합니다.

처음에는 열 선택이 맞는지 확인하고, 조건을 붙인 뒤 정렬을 추가하는 순서로 구성합니다. 수식을 짧은 단위로 나누어 읽는 습관이 있으면 기준이 바뀌어도 수정할 부분을 찾기 수월합니다.

목록으로

이 글은 엑셀·구글시트 자동화 실험에서 발행했습니다. 인용·링크는 자유롭고, 본문·그림의 복제 게시는 삼가 주세요.