Query関数で値が参照できない
複数条件でシート内から値を探せる Query
関数ですが、絶対に間違っていないであろう条件で値が空になるので調べてみたところ、以下の記事がドンピシャでした。
GoogleスプレッドシートのQuery関数で結果が空になる謎仕様と回避策
なんだこの意味不明の仕様は…
ましてや自分は日付を参照したかったので、もう少し複雑な状況でした。
要件
以下のようなとあるログデータを
項目名A | 項目名B | 項目名C | 項目名D | 項目名E | 項目名F |
---|---|---|---|---|---|
文字列 | 文字列 | 数値 | 数値 | 数値 | 2018/12/5 |
文字列 | 文字列 | 数値 | 数値 | 数値 | 2018/12/6 |
文字列 | 文字列 | 数値 | 数値 | 数値 | 2018/12/7 |
以下のようなシートに呼び出したい、という要件です。
12/5 | 12/6 | 12/7 | |
---|---|---|---|
項目名 | 値 | 値 | 値 |
項目名 | 値 | 値 | 値 |
ログの「項目B」と日付が一致した値を参照シート側に呼び出したいのです。
参照シート側は日付の推移を見たいたいため横並びにしているので、日付の書き方が違うのがキモです。
対応
結論から言うと以下のような記述で対応しました。
=QUERY(logsheet!$A:$F,"select C where (B='"&B2&"' AND F='"& TO_TEXT(TEXT(B$1,"YYYY/MM/DD")) &"')")
キモの部分は TO_TEXT(TEXT(***))
という「頭痛が痛い」みたいなアホっぽい関数入れ子です。
参照シート側の 12/5
という日付を一旦 2018/12/05
という日付フォーマットにバラし、さらにそいつを文字列型で見ています。
これでようやくQueryで正しく値を取れました。