実現したいこと
・指定したキーワードを含む行を取得して別のスプレッドシートで参照したい
・参照先のシート内にあるセルA2~A6に記載している文字列を、参照元のC,D,E列内で探して、ヒットすればその行を参照したい
例:
A2 りんご
A3 みかん
A4 バナナ
A5 メロン
A6 いちご
・C,D,E列にA2~A6の果物の名前がどれか一つでも含まれていたら別のスプレッドシートでその行を参照する。
発生している問題・分からないこと
・QUERY関数のWhereで条件を指定しているが、セルA2~A6の文字列を含むはずの行がすべて表示されていない(表示されているものもある)
・whereの指定の仕方が間違っている可能性がある
該当のソースコード
▼①エラーは出ないが参照元のC列しか探せない
=ARRAYFORMULA(QUERY( {TO_TEXT(IMPORTRANGE("参照元スプシのURL","参照先のシート名!A:E"))}, "select * where Col3 = '"&'文字列指定シート'!A2&"' or Col3 = '"&'文字列指定シート'!A3&"' or Col3 = '"&'文字列指定シート'!A4&"' or Col3 = '"&'文字列指定シート'!A5&"' or Col3 = '"&'文字列指定シート'!A6&"' "))
▼②エラーが出る(#VALUE!)関数 QUERY のパラメータ 2 のクエリ文字列を解析できません。
=ARRAYFORMULA(QUERY( {TO_TEXT(IMPORTRANGE("参照元スプシのURL","参照先のシート名!A:E"))}, "select * where Col3,Col4,Col5 = '"&'文字列指定シート'!A2&"' or Col3,Col4,Col5 = '"&'文字列指定シート'!A3&"' or Col3,Col4,Col5 = '"&'文字列指定シート'!A4&"' or Col3,Col4,Col5 = '"&'文字列指定シート'!A5&"' or Col3,Col4,Col5 = '"&'文字列指定シート'!A6&"' "))
▼③エラーは出ないがすべて探し出せていない
=ARRAYFORMULA(QUERY( {TO_TEXT(IMPORTRANGE("参照元スプシのURL","参照先のシート名!A:E"))}, "select * where Col3= '"&'文字列指定シート'!A2&"' or Col4= '"&'文字列指定シート'!A2&"' or Col5= '"&'文字列指定シート'!A2&"' or Col3= '"&'文字列指定シート'!A3&"' or Col4= '"&'文字列指定シート'!A3&"' or Col5= '"&'文字列指定シート'!A3&"' or Col3= '"&'文字列指定シート'!A4&"' or Col4= '"&'文字列指定シート'!A4&"' or Col5= '"&'文字列指定シート'!A4&"' or Col3= '"&'文字列指定シート'!A5&"' or Col4= '"&'文字列指定シート'!A5&"' or Col5= '"&'文字列指定シート'!A5&"' or Col3= '"&'文字列指定シート'!A6&"' or Col4= '"&'文字列指定シート'!A6&"' or Col5= '"&'文字列指定シート'!A6&"' "))
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
whereで複数条件指定ができないかもしれないと思い、③で一つずつ指定してみたのですがA2~A6すべての文字列を拾うことができませんでした。
有識者の方いらっしゃいましたら、どうかご教授いただければ幸いです。
よろしくお願いいたします。
補足
空のシートで「"select * where Col3= '"&'文字列指定シート'!A2&"' or Col4= 略」を貼り付けてみて出た結果が以下です。
select * where Col3= 'りんご' or Col4= 'りんご' or Col5= 'りんご' or Col3= 'みかん' or Col4= 'みかん' or Col5= 'みかん' or Col3= 'バナナ' or Col4= 'バナナ' or Col5= 'バナナ' or Col3= 'メロン' or Col4= 'メロン' or Col5= 'メロン' or Col3= 'いちご' or Col4= 'いちご' or Col5= 'いちご' or
条件取得はできているように見えます・・・
・何が抽出できていて何が抽出できていないのか
→ ③の数式の抽出結果ですが、Col3(C列)の中しか探せていないようです。
Col3(C列)に該当キーワードがなく、Col4,Col5(D,E列)にキーワードが含まれている場合は無視されてしまっています。
(上記の画像だと行3や行6の場合は抽出できていません。)
### 2024/8/26 18:00 補足
pecmm様
補足にご回答いただきありがとうございます!
仰る通り不明点がある状況です。
whereの書き方が問題なのでしょうか。。
queryの書き方についてlikeを使って少し変更してみました。
また、後述しますが同じ状況をスプレッドシートで作成してみました。
▼試したコード
=ARRAYFORMULA(QUERY( {TO_TEXT(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1rzfj2umQkpvQHgSKjUcJRwvYiiDXNnSGsJzGArpQa9M/edit?gid=1122809158#gid=1122809158","シート!A:E"))}, "select * where Col3 like '%"&'文字列指定シート'!A2&"%' or Col4 like '%"&'文字列指定シート'!A2&"%' or Col5 like '%"&'文字列指定シート'!A2&"%' or Col3 like '%"&'文字列指定シート'!A3&"%' or Col4 like '%"&'文字列指定シート'!A3&"%' or Col5 like '%"&'文字列指定シート'!A3&"%' or Col3 like '%"&'文字列指定シート'!A4&"%' or Col4 like '%"&'文字列指定シート'!A4&"%' or Col5 like '%"&'文字列指定シート'!A4&"%' or Col3 like '%"&'文字列指定シート'!A5&"%' or Col4 like '%"&'文字列指定シート'!A5&"%' or Col5 like '%"&'文字列指定シート'!A5&"%' or Col3 like '%"&'文字列指定シート'!A6&"%' or Col4 like '%"&'文字列指定シート'!A6&"%' or Col5 like '%"&'文字列指定シート'!A6&"%' "))
▼結果
成功〇:行2、行5、行6、行7、行8
失敗×:行3の「トマトハウス」のみ参照されない
D列の「バナナ」は参照できているのに、E列の「りんご」が参照できておりません。
現在の環境を再現しましたので、差支えなければ見ていただけますでしょうか?
よろしくお願いいたします。
【参照先シート】
https://docs.google.com/spreadsheets/d/15nHGw1RNFnuFqyFwB-oEwpiio0CakovT6YlmQUH-Ss8/edit?gid=0#gid=0
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。