前回
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="までがひとまとまりの式なのかと誤解されてしまうからです。
そして下のような結果になると思います。
直入+数値
次に年齢が26の者を抽出します。
=QUERY('シート1'!A2:E,"where A is not null and C=26")
条件が数値であればそのままで大丈夫です。結果は下のようになります。
次に任意のセルの値を参照させる場合の記法について見ていきます。
#セル参照+文字列
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です。
結果は以下のようになります。
セル参照+数値
セル参照+数値の場合は「"&セル番地&"」となり、外側の「'」が不要となります。
まとめ
まとめると以下のような表になります。
文字列 | 数値 | |
直入 | ='文字列' | =数値 |
セル参照 | ='"&セル&"' | ="&セル&" |
次回はもう少しいろいろな条件抽出について見ていきたいと思います。