質問: query(importrange("spreadsheet_key", "シート1!A1:G"), "select Col1, Col5, Col6 where Col1 != '' AND YEAR(Col5) < "& A1 &"") の、where Col1 != 『'' AND YEAR(Col5) < "& A1 &"")』部分をシンプルに文字列一致にしたいです。 ●シートキー1シート ●転記先シート A列 B列 C列 D列 佐藤 1 スマホ 2 高橋 2 PC 4 ←転記先シートD列の数字と一致している名前を表示させたい 鈴木 3 スマホ 1 田中 4 カメラ 3 よろしくお願いいたします。 ### 発生している問題・エラーメッセージ ``` エラーメッセージ ``` ### 該当のソースコード =query(IMPORTRANGE("シートキー1","'シート名'!$A$2:$C"),"select Col2 where Col2="&D2&")") ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: 数字の一致ということであれば YEAR(Col5)ではなく Col5 = "& A2 &" みたいな感じではないでしょうか? 【QUERY関数】where句でand,orを使用して複数条件を指定する方法 こちらのサイトがQueryに関していろいろ情報があるので見てみるといいと思います。 ### 191204追記 返答頂いた内容からよく見てみたら、自分がサンプルコードと該当コードを読み違えてました。 まずは文章が、 "select Col2 where Col2="&D2&")" ではなく、 "select Col2 where Col2="&D2 です。 もしその後ろに何か文をつける場合に、はそこから&"Query文"を入れます。 このことは、例えば下の画像の様なやり方だと比較的に解りやすく認識できます。 !QueryTest A1には対象の条件 B1には ="select * where Col2="&A1 そしてクエリには =query(IMPORTRANGE("********","'シート'!$A$2:$C"),B1) これで実際に数式をいじくると、クエリ文がどう変化するのかが確認できます。 今回のクエリ文を別のセルにはってみると、 select Col2 where Col2=) という文字列がかえってきます。 "&D2&"に例えば5が入っていた場合は select Col2 where Col2=5)となり、 ) が余分です。 まずは一旦、別のセルにクエリ文を打ってみるのはどうでしょうか? クエリ文は空白を入れなかったり、文字として認識させたい場合はシングルクオーテーションを入れなければならなかったりしますので、段階を踏んでみてください。 あとsawaさんも言っておりますが、 他のシートを参照するには、IMPORTRANGEしかなく、 条件を元に結果を表示させるには、Queryだけしかない という認識でやっているだけであれば、VlookUpでもいけます。 (表示させたいやつが検索対象より前だとだめですが。) もしやり方を知らなかっただけであれば =Vlookup(検索値,IMPORTRANGE("***","'シート'!$A$2:$C"),行) のやり方でやってみてください。