📋 このステップで学ぶこと
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
✅ クエリ句の順序(重要!)
必ずこの順序で書く:
SELECT :どの列を表示するか
WHERE :どの行を抽出するか
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 と呼びます。複雑な処理も段階的に行えます。
×
artnasekai
#artnasekai #学習メモ