スプレッドシートで使うQuery(クエリ)関数はとても便利です。
特定の条件の人だけ抽出してリストを作りたい場合を説明します。
フィルターをかけて特定の条件の人を抽出する(良くない例)

社員番号・氏名・金額リストで金額が0円の人を除いたリストを作ります。
関数を使用しない場合はフィルタをかける→金額が0の人を除く→コピーして貼り付けます。
直感的に分かりやすいですが、フィルタのかけ間違い・貼り付けミスが起きやすい手順です。
フィルターで0円の人を除外して、隣の列にコピペする。
10001佐藤さんから10010吉田さんまでしかコピペしていない!というミスが起こりそうです。

今度はフィルターを元に戻すと、コピペした列に空欄ができました。
空欄を削除してまた貼り付けないといけません。

解決策はフィルター範囲の最終段より下の段にコピペするか、別のシートにコピペする
→フィルターを外して貼り付け直すことで空欄は無くなります。非常に面倒ですね!
Query関数で特定の条件の人を抽出する(良い例)
スプレッドシートのリストを用意します。Excelデータにリストがある場合は、スプレッドシートに全て貼り付けておきましょう。
- 任意のセルに「=query( 」を入力します(大文字小文字でも可)
- 第1引数「データ」に抽出したい範囲を全て選択しましょう。


抽出したい範囲を選びます。今回は「A1:C12」佐藤さんから山田さんとします。
- クエリの前半は「社員番号・氏名・金額」を抽出したいので「select *」
- 「*」は全てといった意味です。無くても機能しますが、後で見返した時に全ての範囲を指定していることが分かりやすいです。
- クエリの後半は抽出条件「where C <> 0(数字のゼロ)」
- <>は〜以外を示すので「C列が0では無い」ものを意味します。
- クエリとして認識させるために「” ”」で囲みます。
- 数字を使用する場合は「半角」にしましょう。


Query関数が実行されると0円以外の人が抽出できました!
関数を間違えなければ正確に抽出できます。
金額が大きい順に並び替える
クエリの後半に「order by C desc」を組み込み並び替えます。
=query(A1:C12, “select * where C <> 0 order by C desc“)
- order by とは並び替えの意味です。
- 次のアルファベットは並び替えの基準になる列名です。必ず大文字にしましょう!
- 大きい順(降順)=desc、小さい順(降順)=asc いずれかを入力します。
- 「” ”」の中に囲まれた関数になっているか確認しましょう。

小さい順(昇順)にしたリストは下図の通りです。

Query関数は汎用性の高い関数ですのでぜひ使ってみてください!