29
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【GAS】QUERY関数(2時限目)

Last updated at Posted at 2016-12-18

 前回
 http://qiita.com/ShishidoToru/items/d88962fd6d8606d7c4b0

 今回のテーマは条件に合致したデータの抽出ですが、式の中に直接条件を入れる場合、条件を任意のセルに入れ、そのセルを参照させる場合で記法が若干異なり、また、条件そのものが文字列か数値かでも微妙に変わってきます。つまり、4通りの組み合わせがあり、そのあたりを整理しておきます。

直入+文字列

 A3に以下の式を入れます。

=QUERY('シート1'!A2:E,"where A is not null and D='男'")

 
 文字列を「'」(シングルクォーテーション)で包めばOKです。一般的に文字列は「'」か「"」で包んで、数値はそのままです。このあたりは色々なプログラミング言語で変数の定義などでお馴染みですね。ちなみこの場合、「"」(ダブルクオーテーション)だと失敗します。これは、この式をよく見ると"where・・・"と、外側がすでに「"」で包まれており、ここを、"where A is not null and D="男""などとしてしまうと、"where A is not null and D="までがひとまとまりの式なのかと誤解されてしまうからです。

 そして下のような結果になると思います。

スクリーンショット 2016-12-18 16.14.00.png

直入+数値

 次に年齢が26の者を抽出します。

=QUERY('シート1'!A2:E,"where A is not null and C=26")

 条件が数値であればそのままで大丈夫です。結果は下のようになります。

スクリーンショット 2016-12-18 15.42.40.png

 次に任意のセルの値を参照させる場合の記法について見ていきます。

#セル参照+文字列

 A1に「女」と入れて、QUERY式の中にA1セルを参照させてみます。

=QUERY('シート1'!A2:E,"where A is not null and D='"&A1&"'")

 直接代入+文字列の場合は「'文字列'」でしたが、「'"&セル番地&"'」となります。ここを「'A1'」としても、純粋に文字列が「A1」のものがないかどうかを探索してしまうことになります。

 "where A is not null and D='" & A1 & "'"はよく見ると、"条件式の1部" & セル & "条件式の続き"のような形になっていることが分かると思います。このように考えられればのちのちスクリプトで式を組むときに応用が効いてきますが、いまはそうゆうもんだと思っておけばOKです。

 結果は以下のようになります。

スクリーンショット 2016-12-18 15.45.52.png

セル参照+数値

セル参照+数値の場合は「"&セル番地&"」となり、外側の「'」が不要となります。

スクリーンショット 2016-12-18 15.50.20.png

まとめ

 まとめると以下のような表になります。

文字列 数値
直入 ='文字列' =数値
セル参照 ='"&セル&"' ="&セル&"

 次回はもう少しいろいろな条件抽出について見ていきたいと思います。

29
38
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?