구글 시트 QUERY 함수 #VALUE! 오류, 5분 만에 해결하는 법

햇살이 비치는 깔끔한 책상 위, 데이터 분석 화면이 켜진 노트북과 커피, 노트가 정돈되어 있는 모습

내 QUERY 함수만 #VALUE! 오류? 원인은 이 5가지뿐입니다

구글 시트로 데이터를 분석하다가 갑자기 나타나는 #VALUE! 오류. 마감 시간은 다가오는데 함수는 작동하지 않고, 구글링해도 명확한 답을 찾기 어려워 답답했던 경험, 누구나 한 번쯤 있으실 겁니다. 특히 QUERY 함수는 강력한 만큼 문법이 까다로워서, 작은 실수 하나가 전체 작업을 멈추게 만듭니다.

하지만 좋은 소식이 있습니다. QUERY 함수의 #VALUE! 오류는 대부분 5가지 유형의 사소한 실수에서 비롯됩니다. 복잡해 보이지만, 원인을 정확히 알면 5분 안에 해결할 수 있습니다. 이 글에서는 실무에서 바로 적용할 수 있는 해결 코드와 체크리스트를 제공하여, 오류 메시지 앞에서 더 이상 시간을 낭비하지 않도록 돕겠습니다.

💡 일잘러의 팁: QUERY 함수는 데이터 분석의 필수 스킬입니다. 이 오류를 해결하는 방법을 익혀두면, 복잡한 데이터 처리 업무에서 동료들보다 최소 30% 이상 시간을 절약할 수 있습니다.



복붙으로 해결하는 QUERY #VALUE! 오류 유형 5가지와 해결 코드

지금부터 소개하는 5가지 유형은 실무에서 가장 빈번하게 발생하는 오류 패턴입니다. 각 유형마다 NG 예시(잘못된 코드)GOOD 예시(올바른 코드)를 함께 제시하니, 자신의 함수와 비교하며 어디가 잘못되었는지 확인해보세요.

유형 1: 범위 지정 실수 ('Sheet1!A:D' 문법 오류)

QUERY 함수에서 가장 흔하게 발생하는 실수는 데이터 범위를 잘못 지정하는 것입니다. 특히 다른 시트의 데이터를 참조할 때, 시트 이름과 범위 사이의 구분 기호를 빠뜨리거나 오타를 내는 경우가 많습니다.

NG 예시 (오류 발생):

=QUERY(Sheet1A:D, "SELECT * WHERE A > 100")

위 코드는 시트 이름 'Sheet1'과 범위 'A:D' 사이에 느낌표(!)가 누락되어 있습니다. 구글 시트는 이를 인식하지 못해 #VALUE! 오류를 반환합니다.

GOOD 예시 (정상 작동):

=QUERY('시트 이름'!A:D, "SELECT * WHERE A > 100")

올바른 형식은 '시트 이름'!범위입니다. 시트 이름에 공백이나 특수문자가 포함되어 있다면 반드시 작은따옴표로 감싸야 합니다. 예를 들어, '매출 데이터'라는 시트를 참조한다면 '매출 데이터'!A:D처럼 작성해야 합니다.

🌟 Action Item:

  • 시트 이름과 범위 사이에 !가 있는지 확인하세요.
  • 시트 이름에 공백이나 특수문자가 있다면 'Sheet Name'처럼 작은따옴표로 감쌌는지 확인하세요.
  • 시트 이름에 오타가 없는지 다시 한번 점검하세요.

유형 2: 쿼리 문법 오류 (따옴표 사용 규칙 위반)

QUERY 함수의 두 번째 인수인 쿼리 문자열은 SQL과 유사한 문법을 따릅니다. 여기서 가장 헷갈리는 부분이 바로 따옴표 사용 규칙입니다. 큰따옴표와 작은따옴표를 언제 써야 하는지 명확히 구분하지 못하면 오류가 발생합니다.

NG 예시 (오류 발생):

=QUERY(A:D, 'SELECT A, B WHERE C = "판매"')

위 코드는 전체 쿼리문을 작은따옴표로 감쌌고, 쿼리 내부의 텍스트 조건을 큰따옴표로 감쌌습니다. 이는 구글 시트의 규칙과 정반대입니다.

GOOD 예시 (정상 작동):

=QUERY(A:D, "SELECT A, B WHERE C = '판매'")

올바른 규칙은 다음과 같습니다:

  • 전체 쿼리문: 큰따옴표(" ")로 감싸야 합니다.
  • 쿼리 내부의 텍스트 조건: 작은따옴표(' ')로 감싸야 합니다.
  • 숫자 조건: 따옴표를 사용하지 않습니다.

숫자 조건 예시:

=QUERY(A:D, "SELECT A, B WHERE D > 50000")

⚠️ 주의: 텍스트 조건에서 큰따옴표와 작은따옴표를 혼동하면 오류가 발생합니다. 쿼리문 전체는 큰따옴표, 내부 텍스트는 작은따옴표라는 규칙을 꼭 기억하세요.

🌟 Action Item:

  • 전체 쿼리문이 " " (큰따옴표)로 감싸져 있나요?
  • 쿼리문 안의 텍스트 조건이 ' ' (작은따옴표)로 감싸져 있나요?
  • 숫자 조건에는 따옴표를 쓰지 않았나요?


유형 3: 열 참조 방식 혼용 ('A'열과 'Col1' 동시 사용)

QUERY 함수에서 열을 지정하는 방법은 두 가지입니다. 하나는 알파벳 방식(A, B, C...)이고, 다른 하나는 Col 번호 방식(Col1, Col2, Col3...)입니다. 문제는 이 두 가지 방식을 하나의 쿼리 안에서 섞어 쓸 때 발생합니다.

NG 예시 (오류 발생):

=QUERY(A:D, "SELECT Col1, Col2 WHERE A > 100")

위 코드는 SELECT절에서는 'Col' 방식을 사용했지만, WHERE절에서는 알파벳 방식을 사용해 충돌이 발생했습니다. 구글 시트는 이를 일관성 없는 참조로 판단하고 오류를 반환합니다.

GOOD 예시 1 (알파벳 통일):

=QUERY(A:D, "SELECT A, B WHERE A > 100")

GOOD 예시 2 (Col 통일):

=QUERY(A:D, "SELECT Col1, Col2 WHERE Col1 > 100")

두 방식 중 어느 것을 선택해도 상관없지만, 하나의 쿼리 안에서는 반드시 한 가지 방식으로 통일해야 합니다. 일반적으로 데이터 범위에 헤더(제목 행)가 있다면 알파벳 방식이 더 직관적이고, 헤더가 없다면 Col 방식을 사용하는 것이 안전합니다.

💡 일잘러의 팁: 알파벳 방식은 시각적으로 이해하기 쉽지만, 열이 추가되거나 삭제되면 참조가 틀어질 수 있습니다. 반면 Col 방식은 상대적 위치를 기준으로 하므로 데이터 구조 변경에 더 유연합니다.

🌟 Action Item:

  • 하나의 쿼리 안에서 A, B, C... 방식 또는 Col1, Col2, Col3... 방식 중 하나로 통일하세요.
  • 데이터 범위에 헤더(제목 행)가 없다면 Col 방식을 사용해야 합니다.
  • 참조하는 열이 실제 데이터 범위 안에 포함되어 있는지 확인하세요.

유형 4: 데이터 타입 불일치 (숫자 vs 텍스트)

구글 시트에서 숫자처럼 보이는 데이터가 실제로는 텍스트로 저장되어 있는 경우가 있습니다. 이런 상황에서 숫자 비교 조건을 사용하면 데이터 타입 불일치로 인해 오류가 발생하거나, 예상과 다른 결과가 나타납니다.

NG 예시 (오류 발생 가능):

=QUERY(A:D, "SELECT * WHERE A > 100")

위 코드는 A열의 모든 값이 숫자 형식이라고 가정합니다. 하지만 A열에 텍스트 형식으로 저장된 숫자("100")가 섞여 있거나, 빈 셀이 포함되어 있다면 오류가 발생하거나 해당 행이 결과에서 제외됩니다.

GOOD 예시 (빈 셀 제외):

=QUERY(A:D, "SELECT * WHERE A IS NOT NULL AND A > 100")

IS NOT NULL 조건을 추가하면 빈 셀로 인한 오류를 사전에 방지할 수 있습니다. 이는 실무에서 매우 유용한 방어 코드입니다.

⚠️ 주의: 숫자처럼 보이지만 실제로는 텍스트인 데이터는 셀이 왼쪽 정렬되어 있습니다. 숫자는 기본적으로 오른쪽 정렬됩니다. 데이터를 정리할 때 VALUE() 함수를 사용해 텍스트를 숫자로 변환하는 것도 좋은 방법입니다.

🌟 Action Item:

  • 숫자처럼 보이지만 실제로는 텍스트인 데이터가 있는지 확인하세요. (셀 왼쪽 정렬 여부 확인)
  • 비교 조건 앞에 WHERE A IS NOT NULL을 추가하여 빈 셀을 먼저 제외하는 것을 권장합니다.
  • 데이터 정리 단계에서 VALUE() 함수로 텍스트를 숫자로 변환하세요.


유형 5: 날짜/한글 등 특수 조건 처리 오류

날짜나 한글 데이터를 조건으로 사용할 때는 일반 텍스트나 숫자와 다른 특수한 형식을 따라야 합니다. 이 규칙을 모르면 오류가 발생하거나 원하는 결과를 얻을 수 없습니다.

NG 예시 (날짜 오류):

=QUERY(A:D, "SELECT * WHERE A > '2024-01-01'")

위 코드는 날짜를 일반 문자열처럼 작은따옴표로 감쌌습니다. 하지만 QUERY 함수에서 날짜는 문자열이 아니므로, DATE 키워드를 사용해야 합니다.

GOOD 예시 (날짜 정상 처리):

=QUERY(A:D, "SELECT * WHERE A > DATE '2024-01-01'")

날짜 비교 시에는 반드시 DATE 'YYYY-MM-DD' 형식을 사용해야 합니다. 이 형식을 지키지 않으면 구글 시트는 날짜를 인식하지 못합니다.

GOOD 예시 (한글 포함 검색):

=QUERY(A:D, "SELECT * WHERE B CONTAINS '서울'")

특정 텍스트를 포함하는 데이터를 찾을 때는 = 연산자 대신 CONTAINS 또는 LIKE 키워드를 사용하세요. =는 완전히 일치하는 경우만 찾지만, CONTAINS는 부분 일치도 찾아줍니다.

💡 일잘러의 팁: 날짜 데이터를 다룰 때는 셀 형식이 '날짜'로 설정되어 있는지 확인하세요. 텍스트 형식으로 입력된 날짜는 DATE 키워드를 사용해도 제대로 인식되지 않을 수 있습니다.

🌟 Action Item:

  • 날짜를 비교할 때는 WHERE A > DATE 'YYYY-MM-DD' 형식을 사용하세요.
  • 특정 텍스트를 포함하는 데이터를 찾을 때는 = 대신 CONTAINS 또는 LIKE를 활용하세요.
  • 날짜 데이터의 셀 형식이 '날짜'로 설정되어 있는지 확인하세요.
오류 유형 핵심 원인 해결 코드 예시
범위 지정 실수 시트 이름과 범위 사이 느낌표(!) 누락 '시트 이름'!A:D
쿼리 문법 오류 따옴표 사용 규칙 위반 (큰따옴표/작은따옴표 혼동) "SELECT * WHERE C = '판매'"
열 참조 방식 혼용 알파벳(A, B)과 Col(Col1, Col2) 동시 사용 "SELECT A, B WHERE A > 100" (통일)
데이터 타입 불일치 숫자/텍스트 혼재, 빈 셀 미처리 "WHERE A IS NOT NULL AND A > 100"
특수 조건 처리 오류 날짜/한글 형식 미준수 "WHERE A > DATE '2024-01-01'"


5분 컷: QUERY #VALUE! 오류 자가 진단 체크리스트

오류가 발생했다면, 당황하지 말고 아래 체크리스트를 순서대로 확인해보세요. 대부분의 문제는 5분 안에 해결됩니다. 커피 한 잔 마시기 전에 이 리스트만 점검하면, 야근 없이 퇴근할 수 있습니다.

Step 1: 기본 문법 확인 (1분)

ℹ️ 참고: 기본 문법 오류는 전체 오류의 약 60%를 차지합니다. 가장 먼저 점검해야 할 부분입니다.

  • ☐ 전체 쿼리문이 큰따옴표(" ")로 감싸져 있는가?
  • ☐ 쿼리문 안의 텍스트 조건이 작은따옴표(' ')로 감싸져 있는가?
  • ☐ 시트 이름과 범위 사이에 느낌표(!)가 있는가? (예: '시트1'!A:D)
  • ☐ 시트 이름에 공백이나 특수문자가 있다면 작은따옴표로 감쌌는가?

Step 2: 키워드 및 연산자 확인 (1분)

  • SELECT, WHERE, ORDER BY, AND, OR 등 주요 키워드가 대문자로 작성되었는가?
  • ☐ 빈 셀을 제외하기 위해 IS NOT NULL 조건을 추가했는가?
  • ☐ 비교 연산자(>, <, =)를 올바르게 사용했는가?

Step 3: 열 참조 방식 확인 (1분)

  • ☐ 하나의 쿼리 안에서 A, B, C... 또는 Col1, Col2... 중 한 가지 방식만 사용했는가?
  • ☐ 참조하는 열(예: SELECT D)이 데이터 범위(예: A:C) 안에 포함되어 있는가?
  • ☐ 열 이름에 오타가 없는가?

Step 4: 데이터 타입 확인 (2분)

  • ☐ 숫자 조건에 불필요한 따옴표를 사용하지 않았는가? (예: WHERE A > '100' (X))
  • ☐ 날짜 조건에 DATE 'YYYY-MM-DD' 형식을 사용했는가?
  • ☐ 텍스트 형식으로 저장된 숫자가 있는지 확인했는가? (셀 왼쪽 정렬 확인)
  • ☐ 빈 셀이나 오류 값(#N/A, #DIV/0!)이 데이터 범위에 포함되어 있지 않은가?

💡 일잘러의 팁: 가장 먼저 시도해볼 디버깅용 함수는 다음과 같습니다:

=QUERY(A1:D, "SELECT * LIMIT 5")

가장 단순한 형태로 시작해서, 데이터가 제대로 불러와지는지 확인한 후 조건을 하나씩 추가하며 테스트하세요. 어느 조건에서 오류가 발생하는지 정확히 파악할 수 있습니다.



실무에서 바로 써먹는 QUERY 함수 활용 Q&A

QUERY 함수를 실무에 적용하다 보면 자주 마주치는 질문들이 있습니다. 아래 Q&A를 통해 더 효율적으로 QUERY 함수를 활용하는 방법을 익혀보세요.

Q1. QUERY와 FILTER, 뭘 써야 할까요?

A1. 단순 조건 필터링은 FILTER 함수가 직관적입니다. 예를 들어, "A열이 100보다 크고 B열이 '서울'인 행"을 찾는다면 FILTER가 더 간단합니다. 하지만 여러 조건을 조합(AND, OR)하거나, 정렬(ORDER BY), 그룹화(GROUP BY), 집계(SUM, AVG)까지 해야 한다면 QUERY가 훨씬 강력하고 효율적입니다. QUERY는 SQL과 유사한 문법으로 복잡한 데이터 분석을 한 번에 처리할 수 있습니다.

Q2. 여러 조건을 동시에 적용하려면?

A2. AND 또는 OR 연산자를 사용하세요. 괄호로 우선순위를 명확히 하는 것이 좋습니다.

=QUERY(A:D, "SELECT * WHERE (A > 100 AND B = '서울') OR C = '부산'")

위 예시는 "A열이 100보다 크고 B열이 '서울'인 행" 또는 "C열이 '부산'인 행"을 모두 선택합니다. 괄호를 사용하면 조건의 우선순위가 명확해져 오류를 줄일 수 있습니다.

Q3. 결과를 특정 열 기준으로 정렬하고 싶어요.

A3. ORDER BY 절을 사용하세요. ASC는 오름차순(기본값), DESC는 내림차순입니다.

=QUERY(A:D, "SELECT * WHERE A > 100 ORDER BY B DESC")

위 예시는 A열이 100보다 큰 행을 선택한 후, B열을 기준으로 내림차순 정렬합니다. 여러 열을 기준으로 정렬하려면 ORDER BY B DESC, C ASC처럼 쉼표로 구분하세요.

Q4. 중복된 데이터를 제거하고 싶어요.

A4. SELECT 문에 DISTINCT를 사용하거나, 전체 QUERY 결과를 UNIQUE 함수로 감싸세요.

=QUERY(A:D, "SELECT DISTINCT B, C WHERE A > 100")

위 예시는 B열과 C열의 중복을 제거한 결과를 반환합니다. 또는 다음과 같이 UNIQUE 함수를 사용할 수도 있습니다:

=UNIQUE(QUERY(A:D, "SELECT B, C WHERE A > 100"))

Q5. QUERY 함수가 너무 느려요.

A5. A:D처럼 전체 열을 범위로 잡기보다 A1:D1000처럼 실제 데이터가 있는 범위로 지정하세요. 불필요한 열을 SELECT * 대신 SELECT A, B처럼 명시적으로 선택하는 것도 성능 개선에 도움이 됩니다. 특히 데이터가 수천 행 이상일 때는 범위를 명확히 제한하는 것이 중요합니다.

💡 일잘러의 팁: QUERY 함수는 실시간으로 데이터를 불러오므로, 원본 데이터가 자주 변경되는 경우 자동으로 업데이트됩니다. 하지만 성능이 중요하다면, 결과를 별도 시트에 복사해 '값만 붙여넣기'로 고정하는 것도 좋은 방법입니다.



더 이상 QUERY 오류로 야근하지 않는 법: Action Item 3가지

QUERY 함수의 #VALUE! 오류는 더 이상 해결 불가능한 문제가 아닙니다. 오늘 배운 내용을 바탕으로, 아래 3가지 Action Item을 바로 실천해보세요. 이 작은 습관이 당신을 '데이터 분석 고수'로 만들어줄 수 있습니다.

1. 오류 난 내 함수에 '자가 진단 체크리스트' 적용하기

지금 당장 오류가 발생한 시트로 돌아가, 위에서 제공한 체크리스트 항목을 하나씩 대조해보세요. 가장 단순한 형태(=QUERY(범위, "SELECT *"))로 바꾼 뒤, 조건을 하나씩 추가하며 어느 부분에서 오류가 나는지 찾아내세요. 이 과정을 통해 오류의 원인을 보다 정확히 파악할 수 있습니다.

🌟 Action Item: 오늘 퇴근 전, 오류가 발생한 QUERY 함수 1개를 선택해 체크리스트를 적용해보세요. 5분이면 충분합니다.

2. 나만의 'QUERY 함수 템플릿' 만들기

오늘 배운 내용 중 자주 사용하는 쿼리문 3개(예: 날짜 필터링, 특정 텍스트 포함 검색, 정렬)를 별도 메모나 시트에 '템플릿'으로 저장해두세요. 필요할 때마다 복사해서 범위와 조건만 수정하면 오류 없이 빠르게 작업할 수 있습니다.

추천 템플릿 예시:

  • 날짜 필터링: =QUERY(A:D, "SELECT * WHERE A > DATE '2024-01-01'")
  • 텍스트 포함 검색: =QUERY(A:D, "SELECT * WHERE B CONTAINS '서울'")
  • 정렬 및 상위 10개: =QUERY(A:D, "SELECT * ORDER BY C DESC LIMIT 10")

3. 팀 동료에게 '오류 해결 링크' 공유하기

팀 동료가 QUERY 오류로 고생하고 있다면, 이 글의 링크를 공유해주세요. 사소한 함수 오류를 해결하는 데 낭비되는 팀 전체의 시간을 줄여 생산성을 높일 수 있습니다. 당신이 먼저 배운 지식을 나누는 것이 팀의 업무 효율을 높이는 지름길입니다.

ℹ️ 핵심 요약:

  • 오류의 90%는 범위, 따옴표, 열 참조 방식 등 기본 문법 실수입니다.
  • 단순한 쿼리부터 시작해 하나씩 살을 붙여나가는 방식으로 디버깅하세요.
  • 오류가 발생하면 당황하지 말고 '자가 진단 체크리스트'를 꺼내 보세요.

"복잡한 QUERY 함수도 결국 기본 문법의 조합입니다. 오류 메시지를 두려워 말고, 이 글의 체크리스트를 보며 차분히 디버깅하는 습관이 당신을 '일잘러'로 만듭니다."

오늘부터 QUERY 함수의 #VALUE! 오류는 더 이상 당신의 업무를 방해하지 않을 것입니다. 이 글에서 배운 5가지 유형과 체크리스트를 활용해, 5분 안에 오류를 해결하고 정시 퇴근하는 데 활용해 보세요. 당신의 연봉 상승과 업무 효율 혁신을 응원합니다.

다음 이전