구글 스프레드시트 QUERY 함수 사용법: 조건·정렬·#VALUE! 오류 해결
구글 스프레드시트에서 조건에 맞는 행의 일부 열만 뽑아 금액순으로 정렬하려면 QUERY 수식 하나로 처리할 수 있습니다. 이번 주문표에서는 select로 주문번호·담당자·금액 열을 고르고, where로 진행 상태만 남긴 뒤, order by로 금액을 큰 순서대로 정렬했습니다.
PC 웹의 A1:D10에서 직접 확인한 결과, 진행 주문은 O-209·O-207·O-201·O-205·O-204 다섯 건이었고 금액은 140,000원부터 70,000원까지 내림차순으로 반환됐습니다.
#VALUE!가 보이면 수식을 전부 다시 쓰기보다 열 제목 대신 A·B·C 같은 열 문자를 썼는지, 문자열 따옴표와 절 순서가 맞는지부터 확인하세요. 새 행만 결과에서 빠진다면 닫힌 범위의 마지막 행을 먼저 봅니다.

먼저 고를 방식
- 열 선택·조건·정렬을 한 결과표로 만들기: QUERY
- 원본 열 구조 그대로 조건 행만 뽑기: FILTER
- 마우스로 행·열·집계를 바꾸며 요약하기: 피벗 테이블
- QUERY 결과가 펼쳐질 자리: 기존 값을 보존한 뒤 비워 둠
QUERY는 언제 쓰면 되나요?
원본을 바꾸지 않고 필요한 열만 골라 조건·정렬까지 한 번에 적용할 때 QUERY가 잘 맞습니다. 결과는 수식 셀에서 여러 행과 열로 펼쳐지고, 원본 값이 바뀌면 다시 계산됩니다.
| 하려는 일 | 권장 방식 | 이유 |
|---|---|---|
| 열을 고르고 조건·정렬한 별도 표 | QUERY | 선택·필터·정렬을 한 문자열로 관리 |
| 원본과 같은 열 구성으로 조건 행 추출 | FILTER | 일반 셀 조건식으로 읽기 쉬움 |
| 항목별 합계·평균을 화면에서 바꿔 보기 | 피벗 테이블 | 수식보다 편집 패널이 편한 경우가 있음 |
행을 잠시 숨겨 보는 기본 필터와 달리 QUERY는 원본과 별개인 결과 범위를 만듭니다. 상품코드 하나에 대응하는 값 하나만 찾는 작업이라면 QUERY보다 VLOOKUP 같은 조회 함수가 단순합니다.
QUERY 수식은 어떤 요소로 구성되나요?
QUERY는 데이터 범위, 쿼리문, 헤더 행 수의 세 인수로 구성됩니다. 쿼리문 안에서는 필요한 절을 정해진 순서로 이어 붙입니다.
=QUERY(데이터, "쿼리문", 헤더_행_수)
| 요소 | 이번 예제 | 결과에 미치는 영향 |
|---|---|---|
| 데이터 | A1:D | 조회할 원본 범위 |
select | A,B,D | 반환할 열과 순서 |
where | C='진행' | 남길 행의 조건 |
order by | D desc | D열을 큰 값부터 정렬 |
| 헤더 | 1 | 범위 첫 행을 머리글로 처리 |
Google Visualization 쿼리 언어의 기본 절 순서는 select → where → group by → pivot → order by → limit입니다. 모두 쓸 필요는 없지만, 사용하는 절의 순서는 지켜야 합니다.
주문번호가 아니라 A를 씁니다. Google 공식 쿼리 언어 문서도 스프레드시트의 열 식별자는 문자이며, 표시 라벨을 식별자 대신 쓰지 말라고 설명합니다.진행 주문을 금액순으로 추출하려면?
PC 웹에서 A1:D10에 아래 주문표를 만들었습니다. 첫 행은 머리글이고, O-209를 마지막에 추가해 새 행 경계도 함께 확인했습니다.
| 주문번호 | 담당자 | 상태 | 금액 |
|---|---|---|---|
| O-201 | 김하나 | 진행 | 120,000 |
| O-202 | 박도윤 | 완료 | 80,000 |
| O-203 | 김하나 | 완료 | 150,000 |
| O-204 | 이서준 | 진행 | 70,000 |
| O-205 | 김하나 | 진행 | 95,000 |
| O-206 | 박도윤 | 보류 | 110,000 |
| O-207 | 김하나 | 진행 | 130,000 |
| O-208 | 김하나 | 완료 | 60,000 |
| O-209 | 김하나 | 진행 | 140,000 |
빈 결과 영역의 첫 셀 F2에 아래 수식을 한 번 입력합니다.
=QUERY(A1:D,"select A,B,D where C='진행' order by D desc",1)
select A,B,D는 주문번호·담당자·금액만 반환하고, where C='진행'은 상태가 진행인 행만 남깁니다. order by D desc를 이어 붙이면 금액이 큰 주문부터 표시됩니다.
| 주문번호 | 담당자 | 금액 |
|---|---|---|
| O-209 | 김하나 | 140,000 |
| O-207 | 김하나 | 130,000 |
| O-201 | 김하나 | 120,000 |
| O-205 | 김하나 | 95,000 |
| O-204 | 이서준 | 70,000 |

#VALUE!가 보이면 무엇부터 확인하나요?
오류 셀의 설명을 먼저 읽고 열 문자와 따옴표를 확인하세요. 이번 재현에서는 보이는 머리글 문구를 쿼리문에 그대로 넣자 #VALUE!와 함께 쿼리 문자열을 파싱할 수 없다는 설명이 나타났습니다.
아래 수식은 오류가 났습니다.
=QUERY(A1:D9,"select 주문번호,담당자 where 상태='진행'",1)
열 제목을 A·B·C로 바꾸자 같은 조건이 정상 계산됐습니다.
=QUERY(A1:D9,"select A,B where C='진행'",1)
| 증상 | 먼저 확인 | 원인 | 복구 |
|---|---|---|---|
#VALUE!·파싱 오류 | select 뒤 표현 | 표시 머리글을 식별자로 입력 | A·B·C 또는 Col 표기로 수정 |
#VALUE!·문자열 근처 오류 | 큰따옴표·작은따옴표 | 쿼리문이나 텍스트 조건이 닫히지 않음 | 쿼리문은 큰따옴표, 조건값은 작은따옴표로 구분 |
| 일부 값이 빈칸처럼 빠짐 | 한 열의 값 형식 | 숫자와 텍스트가 섞여 적은 쪽 형식이 null 처리됨 | 원본 열의 데이터 형식을 통일 |
| 수식은 맞는데 절 근처 오류 | 절의 순서 | order by와 where 순서가 뒤바뀜 | select → where → order by로 정리 |

새 행만 결과에서 빠지면?
닫힌 범위의 마지막 행을 먼저 확인합니다. 처음 수식을 A1:D9로 만들고 10행에 O-209를 추가하자 원본에는 새 주문이 있지만 QUERY 결과에는 나타나지 않았습니다.
=QUERY(A1:D9,"select A,B,D where C='진행' order by D desc",1)
범위를 A1:D로 바꾸자 O-209가 140,000원으로 결과 첫 행에 추가됐고, 진행 주문은 네 건에서 다섯 건으로 늘었습니다.
=QUERY(A1:D,"select A,B,D where C='진행' order by D desc",1)
A1:D가 누락을 줄이기 쉽습니다. 다만 Google의 성능 가이드는 큰 문서에서 열린 전체 열보다 A1:D1000처럼 필요한 크기의 닫힌 범위를 권장합니다. 큰 시트라면 예상 최대 행까지 여유를 두고 경계에 가까워질 때 확장하세요.헤더 인수는 왜 1로 넣나요?
이번 원본은 A1:D1이 머리글이므로 마지막 인수를 1로 넣었습니다. Google 공식 도움말은 헤더 인수를 생략하거나 -1로 두면 데이터 내용을 보고 추정한다고 설명합니다. 구조를 알고 있다면 명시하는 편이 결과를 해석하기 쉽습니다.
A1:D의 첫 행만 머리글:1A2:D처럼 데이터 행부터 시작:0- 범위 상단 두 행이 머리글:
2
헤더 수를 바꾸면 쿼리문에서 고르는 열 문자가 달라지는 것은 아니지만, 첫 행을 데이터로 볼지 라벨로 볼지가 달라집니다. 자동 추정 결과가 예상과 다르면 범위 시작 행과 헤더 인수를 함께 확인하세요.
PC·Android·iPhone에서 입력 방법이 다른가요?
이 글의 정상·오류·범위 복구 화면은 Google Sheets PC 웹에서 재현했습니다. QUERY 문법은 같고, Android와 iPhone·iPad 앱에서도 셀을 탭한 뒤 등호로 시작하는 수식을 직접 입력할 수 있습니다.
- PC 웹: 결과 시작 셀 선택 → 수식 입력 → Enter
- Android: 셀 탭 →
=QUERY(...)입력 → 완료 - iPhone·iPad: 셀 탭 →
=QUERY(...)입력 → 완료
쿼리 문자열이 길고 오류 설명까지 확인해야 한다면 PC 웹에서 처음 만들고, 모바일에서는 조건값 수정이나 결과 확인을 하는 편이 구분하기 쉽습니다.
지금 적용할 순서
- 원본 범위와 머리글 행 수를 확인합니다.
- 필요한 열의 문자 A·B·C를 적습니다.
select만 넣어 열 선택 결과부터 확인합니다.where조건을 추가해 남는 행을 확인합니다.order by를 마지막에 붙여 정렬 방향을 확인합니다.- 정상값, 조건에서 제외될 값, 새 행을 각각 시험합니다.
#VALUE!가 나오면 열 문자, 따옴표, 절 순서, 헤더 수 순으로 봅니다.- 작은 운영표는 열린 범위, 큰 시트는 여유 있는 닫힌 범위를 선택합니다.
실무 기본값: 작은 예제 범위에서 select만 먼저 성공시킨 뒤 조건과 정렬을 한 절씩 추가하세요. 한 번에 긴 쿼리문을 쓰는 것보다 오류가 생긴 지점을 좁히기 쉽습니다.
참고한 공식 문서와 관련 글
- Google Docs 편집기 도움말: QUERY 함수 문법·헤더·혼합 데이터 형식
- Google Visualization API 쿼리 언어: 열 식별자·절 순서·정렬
- Google Docs 편집기 도움말: 열린 범위와 닫힌 범위 성능 기준
- Google Docs 편집기 도움말: 피벗 테이블 만들기 및 사용
- Google Docs 편집기 도움말: Android에서 수식 및 함수 추가
- Google Docs 편집기 도움말: iPhone·iPad에서 수식 및 함수 추가
- 구글 스프레드시트 FILTER로 원본 열 구조를 유지한 채 조건 행을 추출하는 방법