Step 48:Googleスプレッドシート固有機能

🔍 Step 48: Googleスプレッドシート固有機能(QUERY/IMPORTRANGE)

SQLのような強力な関数で、データを自在に操ろう!

📋 このステップで学ぶこと

  • QUERY関数の基礎(SELECT, WHERE, ORDER BY)
  • QUERY関数の応用(GROUP BY, 集計関数)
  • QUERY関数の高度な使い方(IN, LIKE, MATCHES)
  • IMPORTRANGE関数で別ファイルのデータを取得
  • QUERYとIMPORTRANGEの組み合わせ
  • 配列操作(縦結合・横結合)

⚠️ 重要: この機能はGoogleスプレッドシート専用です。Excelでは使用できません。

🎯 1. QUERY関数とは

Googleスプレッドシート最強の関数

QUERY関数は、SQLのような構文でデータを操作できる、Googleスプレッドシート最強の関数です。フィルター、並べ替え、集計を1つの関数で実現できます。

🏠 日常生活に例えると…

図書館の検索システムと同じです。
  • 従来の方法:本棚を1つずつ見て、条件に合う本を探す(フィルター機能)
  • QUERY関数:検索条件を入力すると、条件に合う本が自動で表示される
「著者が〇〇で、出版年が2020年以降、タイトル順に並べて」という複雑な条件も一発で検索できます。

QUERY関数でできること

句(クエリ) 機能
SELECT 列を選択 SELECT A, B, C
WHERE 条件でフィルター WHERE B = ‘東京都’
ORDER BY 並べ替え ORDER BY C DESC
GROUP BY グループ化して集計 GROUP BY B
LIMIT 表示件数を制限 LIMIT 10
LABEL 列名を変更 LABEL B ‘地域’

QUERY関数の威力

📊 従来の方法との比較(※横スクロールできます)

【目的】東京都の顧客で、売上100万円以上を、売上の降順で表示 【❌ 従来の方法(複数の操作が必要)】 手順: 1. フィルターで「東京都」を選択 2. さらに売上100万円以上でフィルター 3. 売上列で降順ソート 4. 結果を別シートにコピー 問題点: ✗ 手動で何度も操作が必要 ✗ データが更新されたら再度実行 ✗ コピーしたデータは静的(自動更新されない) 【✅ QUERY関数(1行で完結)】 =QUERY(A:D, “SELECT * WHERE B = ‘東京都’ AND C >= 1000000 ORDER BY C DESC”) メリット: ✓ 1つの数式で完結 ✓ データが更新されたら自動で再計算 ✓ コピー不要(結果が動的に更新) ✓ 読みやすく、管理しやすい
🔑 QUERY関数の基本ルール

  • クエリ文は二重引用符で囲む:正 "SELECT A, B"
  • 列はA, B, C…で指定:列名ではなくアルファベット
  • 文字列は単一引用符で囲む:正 "WHERE A = '東京'"
  • 大文字小文字は区別しない:SELECT = select = SeLeCt

🔍 2. QUERY関数の基礎(SELECT, WHERE, ORDER BY)

SELECT: 列を選択する

📋 基本の使い方(※横スクロールできます)

【基本構文】 =QUERY(データ範囲, “SELECT 列”, ヘッダー行数) 【すべての列を選択】 =QUERY(A1:D10, “SELECT *”) → A〜D列のすべてのデータ 【特定の列だけ選択】 =QUERY(A1:D10, “SELECT A, C”) → A列とC列だけ 【列の順序を変更】 =QUERY(A1:D10, “SELECT C, A, B”) → C列、A列、B列の順で表示 【計算列を追加】 =QUERY(A1:D10, “SELECT A, B, C*1.1”) → C列の値を1.1倍して表示 💡 ポイント:列は A, B, C… で指定(列名ではない!)

WHERE: 条件でフィルターする

📋 条件の指定方法(※横スクロールできます)

【等号(完全一致)】 =QUERY(A:D, “SELECT * WHERE B = ‘東京都'”) → B列が「東京都」の行のみ 【不等号】 =QUERY(A:D, “SELECT * WHERE C > 1000000”) → C列が100万より大きい行のみ 【複数条件(AND:かつ)】 =QUERY(A:D, “SELECT * WHERE B = ‘東京都’ AND C > 1000000”) → 東京都 かつ 売上100万円以上 【複数条件(OR:または)】 =QUERY(A:D, “SELECT * WHERE B = ‘東京都’ OR B = ‘大阪府'”) → 東京都 または 大阪府 【範囲条件】 =QUERY(A:D, “SELECT * WHERE C >= 500000 AND C <= 1000000") → 売上が50万円以上100万円以下 【否定(〜以外)】 =QUERY(A:D, "SELECT * WHERE B != '東京都'") → 東京都以外 【演算子一覧】 = 等しい != 等しくない > より大きい < より小さい >= 以上 <= 以下 💡 ポイント:文字列は単一引用符 '...' で囲む、数値は囲まない

ORDER BY: 並べ替える

📋 並べ替えの指定方法(※横スクロールできます)

【昇順(小さい順・あいうえお順)】 =QUERY(A:D, “SELECT * ORDER BY C”) または =QUERY(A:D, “SELECT * ORDER BY C ASC”) → C列を昇順で並べ替え 【降順(大きい順)】 =QUERY(A:D, “SELECT * ORDER BY C DESC”) → C列を降順で並べ替え 【複数列で並べ替え】 =QUERY(A:D, “SELECT * ORDER BY B, C DESC”) → 1. B列で昇順ソート → 2. 同じB列の値の中で、C列を降順ソート 結果例: 都道府県 売上 大阪府 2,000,000 ← 大阪府の中で売上順 大阪府 1,000,000 東京都 1,500,000 ← 東京都の中で売上順 東京都 1,200,000 💡 ポイント:ASC(昇順)は省略可、DESC(降順)は明記必須

組み合わせ例

📊 SELECT + WHERE + ORDER BY(※横スクロールできます)

【例1】東京都の顧客を売上降順で表示 =QUERY(A:D, “SELECT * WHERE B = ‘東京都’ ORDER BY C DESC”) データ: 顧客名 都道府県 売上 A社 東京都 2,000,000 B社 大阪府 1,800,000 C社 東京都 1,500,000 D社 東京都 1,200,000 結果: 顧客名 都道府県 売上 A社 東京都 2,000,000 C社 東京都 1,500,000 D社 東京都 1,200,000 【例2】売上100万円以上の顧客名と売上だけ表示 =QUERY(A:D, “SELECT A, C WHERE C >= 1000000”) 結果: 顧客名 売上 A社 2,000,000 B社 1,800,000 C社 1,500,000 D社 1,200,000 【例3】大阪府または東京都で、売上150万円以上 =QUERY(A:D, “SELECT * WHERE (B = ‘東京都’ OR B = ‘大阪府’) AND C >= 1500000”) 結果: 顧客名 都道府県 売上 A社 東京都 2,000,000 B社 大阪府 1,800,000 C社 東京都 1,500,000 💡 順序は必ず:SELECT → WHERE → ORDER BY
✅ クエリ句の順序(重要!)

必ずこの順序で書く:
  1. SELECT:どの列を表示するか
  2. WHERE:どの行を抽出するか
  3. ORDER BY:どう並べ替えるか
順序を間違えるとエラーになります!

📊 3. QUERY関数の応用(GROUP BY, 集計関数)

GROUP BY: グループ化して集計

GROUP BYを使うと、ピボットテーブルのような集計が関数でできます!

📋 基本の使い方(※横スクロールできます)

【基本構文】 =QUERY(A:D, “SELECT B, SUM(C) GROUP BY B”) 意味: ・B列でグループ化 ・各グループのC列を合計 【集計関数の種類】 SUM(列) :合計 COUNT(列) :個数(空白以外) AVG(列) :平均 MAX(列) :最大値 MIN(列) :最小値 【使用例】 データ: 顧客名 都道府県 売上 A社 東京都 1,000,000 B社 大阪府 1,500,000 C社 東京都 1,200,000 D社 大阪府 800,000 =QUERY(A:D, “SELECT B, SUM(C) GROUP BY B”) 結果: 都道府県 sum 売上 東京都 2,200,000 大阪府 2,300,000

複数の集計を同時に行う

📊 COUNT, SUM, AVGを一度に(※横スクロールできます)

【複数の集計】 =QUERY(A:D, “SELECT B, COUNT(A), SUM(C), AVG(C) GROUP BY B”) 結果: 都道府県 count 顧客 sum 売上 avg 売上 東京都 2 2,200,000 1,100,000 大阪府 2 2,300,000 1,150,000 【GROUP BY + ORDER BY(集計結果を並べ替え)】 =QUERY(A:D, “SELECT B, SUM(C) GROUP BY B ORDER BY SUM(C) DESC”) 結果: 都道府県 sum 売上 大阪府 2,300,000 ← 売上順(降順) 東京都 2,200,000 【GROUP BY + WHERE(集計前にフィルター)】 =QUERY(A:D, “SELECT B, AVG(C) WHERE C >= 1000000 GROUP BY B”) 意味: ・売上100万円以上のデータだけを対象に ・都道府県別の平均を計算

LABEL: 列名を変更する

📋 見出しをわかりやすく(※横スクロールできます)

【列名の変更】 =QUERY(A:D, “SELECT B, SUM(C) GROUP BY B LABEL B ‘都道府県’, SUM(C) ‘合計売上'”) 結果: 都道府県 合計売上 ← 列名が変わった! 東京都 2,200,000 大阪府 2,300,000 【複数の列名を変更】 =QUERY(A:D, “SELECT B, COUNT(A), SUM(C), AVG(C) GROUP BY B LABEL B ‘地域’, COUNT(A) ‘顧客数’, SUM(C) ‘総売上’, AVG(C) ‘平均'”) 結果: 地域 顧客数 総売上 平均 東京都 2 2,200,000 1,100,000 大阪府 2 2,300,000 1,150,000 💡 LABELはクエリの最後に書く
⚠️ GROUP BYの注意点

  • SELECT句の列は、GROUP BY句にも必要
    正:SELECT B, SUM(C) GROUP BY B
    誤:SELECT B, C GROUP BY B(Cは集計関数で囲む必要あり)
  • 集計関数以外の列は、すべてGROUP BYに含める
    正:SELECT B, D, SUM(C) GROUP BY B, D
  • WHERE句はGROUP BYの前
    正:WHERE C > 0 GROUP BY B
    誤:GROUP BY B WHERE C > 0

🔧 4. QUERY関数の高度な使い方

IN句: 複数の値に一致

📋 OR条件を簡潔に書く(※横スクロールできます)

【IN句の基本】 =QUERY(A:D, “SELECT * WHERE B IN (‘東京都’, ‘大阪府’, ‘愛知県’)”) 意味:B列が「東京都」「大阪府」「愛知県」のいずれかに一致 【従来の書き方(長い)】 =QUERY(A:D, “SELECT * WHERE B = ‘東京都’ OR B = ‘大阪府’ OR B = ‘愛知県'”) 【IN句の書き方(短い)】 =QUERY(A:D, “SELECT * WHERE B IN (‘東京都’, ‘大阪府’, ‘愛知県’)”) → 同じ結果!でもIN句の方が読みやすい 【数値でも使える】 =QUERY(A:D, “SELECT * WHERE C IN (1000000, 1500000, 2000000)”) → 売上が100万円、150万円、200万円のいずれか

LIKE句: 部分一致検索

📋 「〜を含む」「〜で始まる」(※横スクロールできます)

【前方一致(〜で始まる)】 =QUERY(A:D, “SELECT * WHERE B LIKE ‘東京%'”) → 「東京都」「東京23区」「東京タワー」など 【後方一致(〜で終わる)】 =QUERY(A:D, “SELECT * WHERE B LIKE ‘%株式会社'”) → 「ABC株式会社」「XYZ株式会社」など 【部分一致(〜を含む)】 =QUERY(A:D, “SELECT * WHERE B LIKE ‘%東京%'”) → 「東京都」「東京支店」「西東京市」など 【ワイルドカード】 % :任意の文字列(0文字以上) _ :任意の1文字 【例】特定の日付パターン =QUERY(A:D, “SELECT * WHERE A LIKE ‘2025-01-__'”) → 2025年1月の任意の日付(01〜31日)

MATCHES: 正規表現

📋 複雑なパターンマッチ(※横スクロールできます)

【正規表現の基本】 =QUERY(A:D, “SELECT * WHERE B MATCHES ‘.*@gmail\\.com'”) → B列が「@gmail.com」を含む 【例1】電話番号の形式 =QUERY(A:D, “SELECT * WHERE B MATCHES ‘0[0-9]{1,4}-[0-9]{1,4}-[0-9]{4}'”) → 03-1234-5678 のような形式 【例2】郵便番号の形式 =QUERY(A:D, “SELECT * WHERE B MATCHES ‘[0-9]{3}-[0-9]{4}'”) → 123-4567 の形式 【例3】OR条件(正規表現版) =QUERY(A:D, “SELECT * WHERE B MATCHES ‘東京|大阪|愛知'”) → 「東京」「大阪」「愛知」のいずれかを含む 💡 正規表現は複雑なので、LIKEで済む場合はLIKEを使う

LIMIT / OFFSET: 表示件数の制御

📋 上位N件、ページネーション(※横スクロールできます)

【LIMIT: 上位N件を表示】 =QUERY(A:D, “SELECT * ORDER BY C DESC LIMIT 10”) → 売上トップ10を表示 【OFFSET: 開始位置を指定】 =QUERY(A:D, “SELECT * ORDER BY C DESC LIMIT 10 OFFSET 10”) → 11位〜20位を表示(最初の10件をスキップ) 【ページネーションの例】 1ページ目:LIMIT 10 OFFSET 0 (1〜10件) 2ページ目:LIMIT 10 OFFSET 10 (11〜20件) 3ページ目:LIMIT 10 OFFSET 20 (21〜30件) 【GROUP BY + LIMIT】 =QUERY(A:D, “SELECT B, SUM(C) GROUP BY B ORDER BY SUM(C) DESC LIMIT 5”) → 売上上位5都道府県を表示
💡 高度な検索の使い分け

  • IN句:複数の完全一致(東京、大阪、愛知のいずれか)
  • LIKE句:パターンマッチ(シンプル)(「〜を含む」「〜で始まる」)
  • MATCHES:正規表現(複雑なパターン)(メールアドレス、電話番号の形式)
  • LIMIT/OFFSET:表示件数の制御(トップ10、ページネーション)

🔗 5. IMPORTRANGE関数で別ファイルのデータを取得

IMPORTRANGE関数とは

IMPORTRANGE関数は、別のスプレッドシートのデータを取得できる関数です。複数のファイルに分散したデータを1つにまとめることができます。

📋 基本の使い方(※横スクロールできます)

【基本構文】 =IMPORTRANGE(“スプレッドシートのURL”, “シート名!範囲”) または =IMPORTRANGE(“スプレッドシートのキー”, “シート名!範囲”) 【例】 =IMPORTRANGE(“https://docs.google.com/spreadsheets/d/ABC123XYZ/edit”, “売上データ!A1:D100”) または =IMPORTRANGE(“ABC123XYZ”, “売上データ!A1:D100”) 【スプレッドシートキーの見つけ方】 URL:https://docs.google.com/spreadsheets/d/ABC123XYZ/edit ↑ キー:ABC123XYZ の部分 【初回実行時】 「このスプレッドシートにアクセスする権限が必要です」 → [アクセスを許可] をクリック

IMPORTRANGE の活用例

📊 実務での使い方(※横スクロールできます)

【例1】別ファイルの売上データを取得 =IMPORTRANGE(“ABC123”, “2025年売上!A1:D100”) 結果: 別ファイルの「2025年売上」シートのA1:D100が 現在のシートに表示される 【例2】マスタデータの参照 商品マスタファイル(別ファイル): 商品コード 商品名 単価 A001 りんご 150 A002 バナナ 100 作業ファイル: =IMPORTRANGE(“マスタファイルのキー”, “商品マスタ!A1:C100”) メリット: ・マスタを一元管理 ・マスタが更新されたら自動反映 【例3】複数店舗のデータを統合 新宿店:=IMPORTRANGE(“新宿店のキー”, “売上!A2:D100”) 渋谷店:=IMPORTRANGE(“渋谷店のキー”, “売上!A2:D100”) 池袋店:=IMPORTRANGE(“池袋店のキー”, “売上!A2:D100”) → これらを縦に並べると、全店舗のデータが1つに!

QUERY と IMPORTRANGE の組み合わせ

📊 最強の組み合わせ(※横スクロールできます)

【基本】 =QUERY(IMPORTRANGE(“ABC123”, “売上!A1:D100”), “SELECT * WHERE Col1 = ‘東京都'”) 💡 注意:IMPORTRANGEのデータは列名が使えない → Col1, Col2, Col3… を使う 【例1】別ファイルから東京都のデータだけ取得 =QUERY(IMPORTRANGE(“ABC123”, “売上!A1:D100”), “SELECT * WHERE Col2 = ‘東京都'”) 意味: 1. 別ファイルの売上データを取得 2. その中から東京都のデータだけフィルター 【例2】別ファイルのデータを集計 =QUERY( IMPORTRANGE(“ABC123”, “売上!A1:D100”), “SELECT Col2, SUM(Col4) GROUP BY Col2 ORDER BY SUM(Col4) DESC” ) 意味: 1. 別ファイルの売上データを取得 2. 都道府県別に売上を集計 3. 降順で表示 【例3】複数ファイルを結合してフィルター ={ QUERY(IMPORTRANGE(“ABC123”, “売上!A2:D100”), “SELECT * WHERE Col4 > 1000000”); QUERY(IMPORTRANGE(“DEF456”, “売上!A2:D100”), “SELECT * WHERE Col4 > 1000000”) } 意味: 1. ファイル1から100万円以上のデータ 2. ファイル2から100万円以上のデータ 3. これらを縦に結合
⚠️ IMPORTRANGEの注意点

  • 初回は権限の許可が必要:[アクセスを許可]をクリック
  • リアルタイム更新ではない:数分の遅延がある場合がある
  • 大量のIMPORTRANGEは重い:スプレッドシートが遅くなる
  • 参照先が削除されるとエラー:#REF! エラーになる
  • 列はCol1, Col2…で指定:列名(A, B, C)は使えない

📦 6. 配列操作(縦結合・横結合)

配列結合とは

Googleスプレッドシートでは、配列を結合して、複数のデータをまとめることができます。

📋 縦結合と横結合(※横スクロールできます)

【縦結合(;):行を追加】 基本構文: ={範囲1; 範囲2; 範囲3} 例: ={A1:D10; A11:D20} → A1:D10の下に、A11:D20を追加 用途:同じ列構成のデータをまとめる 【横結合(,):列を追加】 基本構文: ={範囲1, 範囲2, 範囲3} 例: ={A1:B10, D1:E10} → A1:B10の右に、D1:E10を追加(C列は飛ばす) 用途:同じ行数のデータを横に並べる 💡 ポイント ・縦結合(;):列数が一致している必要がある ・横結合(,):行数が一致している必要がある

配列結合の活用例

📊 複数データの統合(※横スクロールできます)

【例1】QUERYの結果を縦結合 ={ QUERY(A:D, “SELECT * WHERE B = ‘東京都'”); QUERY(A:D, “SELECT * WHERE B = ‘大阪府'”) } → 東京都のデータと大阪府のデータを縦に並べる 【例2】複数ファイルのデータを統合 ={ IMPORTRANGE(“ファイル1のキー”, “売上!A2:D100”); IMPORTRANGE(“ファイル2のキー”, “売上!A2:D100”); IMPORTRANGE(“ファイル3のキー”, “売上!A2:D100”) } → 3つのファイルの売上データを1つにまとめる 【例3】ヘッダー行を追加して統合 ={ {“店舗”, “日付”, “商品”, “売上”}; IMPORTRANGE(“新宿店”, “売上!A2:D100”); IMPORTRANGE(“渋谷店”, “売上!A2:D100”) } → 最初の行にヘッダーを追加 【例4】店舗名の列を追加して統合 ={ {“店舗”, “日付”, “商品”, “売上”}; {“新宿店”, IMPORTRANGE(“新宿店”, “売上!A2:C2”)}; {“渋谷店”, IMPORTRANGE(“渋谷店”, “売上!A2:C2”)} } → 各行に店舗名を追加
💡 縦結合(;)のポイント

  • 行を追加する
  • 同じ列構成のデータをまとめる
  • 列数が一致している必要がある
  • ヘッダー行は1つ目だけに
📝 横結合(,)のポイント

  • 列を追加する
  • 同じ行数のデータを横に並べる
  • 行数が一致している必要がある
  • 異なるシートのデータを横に結合

📝 練習問題

練習 1
初級

QUERYで東京都のデータを抽出してください

データ(A1:D10): 顧客名 都道府県 売上 利益 A社 東京都 1,000,000 100,000 B社 大阪府 1,500,000 150,000 C社 東京都 1,200,000 120,000 D社 愛知県 1,100,000 110,000 要件: 東京都のデータだけを表示するQUERY関数を書いてください

解答:

=QUERY(A1:D10, “SELECT * WHERE B = ‘東京都'”)

結果:

顧客名 都道府県 売上 利益 A社 東京都 1,000,000 100,000 C社 東京都 1,200,000 120,000

解説:

  • A1:D10:データ範囲
  • SELECT *:すべての列を選択
  • WHERE B = '東京都':B列(都道府県)が「東京都」の行のみ
  • 文字列は単一引用符で囲む
練習 2
中級

QUERYで都道府県別の売上合計を計算してください

データ(A1:D10): 顧客名 都道府県 売上 利益 A社 東京都 1,000,000 100,000 B社 大阪府 1,500,000 150,000 C社 東京都 1,200,000 120,000 D社 大阪府 800,000 80,000 E社 愛知県 1,100,000 110,000 要件: 都道府県別に売上を集計し、売上の降順で表示 列名も「地域」「合計売上」に変更

解答:

=QUERY(A1:D10, “SELECT B, SUM(C) GROUP BY B ORDER BY SUM(C) DESC LABEL B ‘地域’, SUM(C) ‘合計売上'”)

結果:

地域 合計売上 大阪府 2,300,000 東京都 2,200,000 愛知県 1,100,000

解説:

  • SELECT B, SUM(C):B列と、C列の合計を選択
  • GROUP BY B:B列(都道府県)でグループ化
  • ORDER BY SUM(C) DESC:売上の降順で並べ替え
  • LABEL:列名を変更

この関数1つで、ピボットテーブルと同じ集計ができます!

練習 3
上級

IMPORTRANGEとQUERYを組み合わせてください

シナリオ: 別のスプレッドシート(キー:ABC123)の 「2025年売上」シートのA1:D100に売上データがあります 日付 顧客 地域 売上 2025-01-15 A社 東京都 1,000,000 2025-01-20 B社 大阪府 1,500,000 … 要件: 1. このデータを取得 2. 売上が100万円以上のデータだけ抽出 3. 地域別に集計 4. 売上の降順で表示

解答:

=QUERY( IMPORTRANGE(“ABC123”, “2025年売上!A1:D100”), “SELECT Col3, SUM(Col4) WHERE Col4 >= 1000000 GROUP BY Col3 ORDER BY SUM(Col4) DESC LABEL Col3 ‘地域’, SUM(Col4) ‘合計売上'” )

解説:

  • IMPORTRANGE("ABC123", "2025年売上!A1:D100"):別ファイルのデータを取得
  • Col1, Col2, Col3, Col4:IMPORTRANGEのデータは列名が使えないので、Col番号を使う
  • WHERE Col4 >= 1000000:売上100万円以上
  • GROUP BY Col3:地域(3列目)でグループ化
  • ORDER BY SUM(Col4) DESC:売上の降順

📝 Step 48 のまとめ

✅ このステップで学んだこと
  • QUERY関数の基礎:SELECT, WHERE, ORDER BYでデータ操作
  • QUERY関数の応用:GROUP BYで集計、LABELで列名変更
  • 高度な検索:IN, LIKE, MATCHESで柔軟な条件指定
  • IMPORTRANGE:別ファイルのデータを取得
  • 組み合わせ:QUERYとIMPORTRANGEで強力な分析
  • 配列操作:縦結合(;)・横結合(,)でデータ統合
🎯 実務での活用シーン

  • 複数店舗のデータ統合:各店舗の売上データをIMPORTRANGEで取得 → QUERYで集計
  • 動的なダッシュボード:QUERYで最新データを自動取得 → グラフ化
  • マスタデータの一元管理:商品マスタをIMPORTRANGEで参照 → 更新を自動反映
  • 高度なフィルタリング:LIKE、MATCHESで柔軟な検索
  • レポートの自動化:QUERYで集計 → 毎日自動更新されるレポート
🎯 次のステップの予告

Googleスプレッドシートの強力な関数をマスターしました!次のStep 49では、「データインポート・エクスポート」を学びます。CSVファイルの取り扱いやPDF出力など、外部データとの連携方法を習得します。

❓ よくある質問

Q1: QUERY関数でエラーが出ます
よくあるエラーと対処法:

#VALUE!:クエリ文の構文エラー。引用符の使い方を確認(文字列は単一引用符 ‘…’、クエリ全体は二重引用符 “…”)

#REF!:範囲指定が間違っている、または列番号が存在しない

空の結果:条件に一致するデータがない。WHERE句の条件を確認

Parse error:SELECT, WHERE, GROUP BYなどの順序が間違っている。必ず SELECT → WHERE → GROUP BY → ORDER BY の順で書く
Q2: IMPORTRANGEが#REF!エラーになります
原因と対処法:

1. 権限がない:[アクセスを許可]をクリック
2. URLまたはキーが間違っている:スプレッドシートのURLを確認
3. シート名が間違っている:「シート1」「Sheet1」など、正確な名前を使う
4. 参照先が削除された:元のスプレッドシートが存在するか確認
5. 範囲が間違っている:”A1:D100″ のように、範囲を正しく指定
Q3: QUERYとフィルター、どちらを使うべきですか?
QUERYを使う場合:
✓ 自動更新したい(関数なので常に最新)
✓ 複雑な条件(複数条件、集計など)
✓ 結果を別シートに表示したい

フィルターを使う場合:
✓ 一時的に確認したいだけ
✓ 視覚的に操作したい

推奨:レポートや分析にはQUERY、一時的な確認にはフィルター
Q4: Excelにも同じ機能はありますか?
残念ながら、ExcelにはQUERYやIMPORTRANGEと同等の関数はありません。

Excelの代替:
QUERY → Power Query:同様の処理が可能(ただし関数ではなくツール)
IMPORTRANGE → 外部データ接続:別ファイルのデータを取り込めるが、設定が複雑

複数ファイルの統合や動的な集計は、Googleスプレッドシートの方が簡単です!
Q5: QUERYが遅いのですが…
QUERYを高速化する方法:

1. 範囲を限定する
悪い例:=QUERY(A:Z, ...)
良い例:=QUERY(A1:D100, ...)
→ 不要な列や行を含めない

2. IMPORTRANGEを減らす:複数のIMPORTRANGEは重い

3. 計算を減らす:複雑な数式は別のセルで計算してからQUERYで参照

4. 結果が変わらないなら固定化:値のみ貼り付けで固定化
Q6: QUERYで日付を条件にしたい
日付を条件にする場合は、date関数を使います:

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

日付の形式は '年-月-日'(例:'2025-01-01'

セル参照を使う場合:
=QUERY(A:D, "SELECT * WHERE A >= date '"&TEXT(E1,"yyyy-mm-dd")&"'")
Q7: QUERYの結果をさらにQUERYできますか?
はい、できます!QUERYの中にQUERYを入れることができます:

=QUERY(QUERY(A:D, "SELECT * WHERE B = '東京都'"), "SELECT Col1, Col3 ORDER BY Col3 DESC")

これをネストしたQUERYと呼びます。複雑な処理も段階的に行えます。
📝

学習メモ

Excel・Googleスプレッドシート完全マスター - Step 48

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE