Google Sheetsで「出力が空です」というQUERY関数のエラーを解決する方法

beginner📗 Google Sheets2026-06-16| Google Sheets (全ブラウザ対応)

Error Message

Error: Query completed with an empty output
#google-sheets#query関数#データ型#スプレッドシート

クイック解決策 (TL;DR)

ダッシュボードを台無しにする最大の要因は、大量のエラーメッセージです。この特定のエラーは、QUERY の構文は正しいものの、WHERE 句に一致する行がゼロであることを意味します。スプレッドシートの見栄えを保つために、数式を IFERROR 関数で囲み、エラーの代わりにカスタムメッセージを表示するようにしましょう:

=IFERROR(QUERY(A:C, "SELECT A, B WHERE C = 'Paid'", 1), "No matching records")

データが確実に存在しているのにエラーが解消されない場合は、データ型の不一致不適切な日付形式、または隠れた空白が原因である可能性が高いです。

主な原因と解決方法

1. データ型の不一致 (51%ルール)

Google スプレッドシートの QUERY 関数は、Google Visualization API を利用しています。この API は非常に厳格です。列の最初の100行をスキャンして、データ型(数値、文字列、または日付)を推測します。もしそのうち90行が数値で10行がテキストだった場合、QUERY 関数はしばしばその10行のテキストを null 値として扱います。これは、データがいつの間にか消えてしまう「サイレント・データキラー」です。

解決策: クエリを実行する前に、ARRAYFORMULATO_TEXT を使用して、範囲全体を強制的にテキスト形式に変換します。これにより、すべてのデータが同じ条件で扱われるようになります。

=QUERY(ARRAYFORMULA(TO_TEXT(A:C)), "SELECT Col1, Col2 WHERE Col3 = 'Active'", 1)

ヒント:範囲を ARRAYFORMULA で囲む場合は、列文字(A, B)からインデックス番号(Col1, Col2)に切り替える必要があります。

2. 日付形式の壁

「12/31/2023」のような標準的な日付形式はセル内では機能しますが、クエリ文字列内では失敗します。QUERY 関数は、date キーワードを前に付けた ISO 形式(yyyy-mm-dd)を要求します。日付が含まれる E1 のようなセルを参照する場合、単にセルを指定するだけでなく、書式を設定する必要があります。

失敗する理由: =QUERY(A:C, "SELECT A WHERE B > '01/01/2024'")

正しい構文: 数式に日付を直接入力する場合: =QUERY(A:C, "SELECT A WHERE B > date '2024-01-01'", 1)

セル E1 から日付を取得する場合: =QUERY(A:C, "SELECT A WHERE B > date '"&TEXT(E1, "yyyy-mm-dd")&"'", 1)

3. 大文字・小文字の区別

コンピュータは文字通りに解釈します。Google スプレッドシートのクエリにとって、「Apple」と「apple」は完全に別物です。データに大文字と小文字が混在している場合、標準的な WHERE 句では半分のエントリを見逃してしまい、結果が空になる可能性があります。

解決策: 比較の際に lower() 関数を使用して、すべてを小文字に変換します。これにより、大文字・小文字を区別せずに検索できるようになります。

=QUERY(A:C, "SELECT A, B WHERE lower(C) = 'shipped'", 1)

4. 隠れた空白 (見えない原因)

データが完璧に見えても、セルに「Paid」ではなく「Paid 」(末尾にスペース)が含まれていることがあります。そのわずか1つの空白だけで、出力が空になるエラーが発生します。これは、会計ソフトや CRM からエクスポートしたデータでよく起こります。

解決策: 等号(=)の代わりに contains 演算子を使用します。これにより、空白に対してより柔軟に対応できます。

=QUERY(A:C, "SELECT A, B WHERE C contains 'Paid'", 1)

5. ヘッダー行のカウントミス

QUERY 関数の第3引数は、ヘッダーが何行あるかを Google に伝えます。ここを空白にすると、スプレッドシートが推測します。もし推測が外れると、唯一の実際のデータ行をヘッダーの一部として誤認してしまい、結果に表示するものが何も残らなくなることがあります。

解決策: ソフトウェアに推測させないようにしましょう。明示的に 1(ヘッダーがない場合は 0)を設定してください。

=QUERY(A:E, "SELECT * WHERE A IS NOT NULL", 1)

修正を確認する方法

データが正しく返されるか確認するために、以下の手順を試してください:

  • ホバーして確認: エラーのあるセルの上にマウスを置きます。赤い三角形が消えていれば、構文は修正されています。
  • 範囲を広げる: 一時的に WHERE 句を削除してみてください。データが表示される場合、問題はデータ範囲ではなく、フィルタ条件にあります。
  • データ型をテストする: 元のデータに対して =TYPE(A2) を使用します。同じ列に 1(数値)と 2(テキスト)が混在している場合は、ステップ1で説明した TO_TEXT の修正を適用してください。

トラブルシューティング・クイックリファレンス

  問題の状況
  考えられる原因
  適用する修正:




  結果がゼロ
  制限の厳しいフィルタ
  `IFERROR()` で囲む


  特定の行が表示されない
  データ型の混在
  `ARRAYFORMULA(TO_TEXT())` を使用


  日付フィルタが機能しない
  無効な日付文字列
  `date 'yyyy-mm-dd'` を使用


  テキストの一致が機能しない
  大文字・小文字または空白
  `lower()` または `contains` を使用

Related Error Notes