質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

8127閲覧

ある範囲から条件一致するデータを抽出したい

Cabe

総合スコア24

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

2クリップ

投稿2018/05/21 03:45

編集2018/05/21 14:10

検索しても条件にあう内容が見つけれなかったのでこちらで質問させていただきました。

googleスプレッドシートで
ある範囲の中から条件が一致する文字列を検索し、その行の特定のセルの文字列を抽出してリストにしたいです。

 |  A  |  B  |   C  |  D  |  E  |
1| 太 郎 | 東 京 | 大 阪 | 広 島 |     |
2| 二 郎 | 東 京 | 広 島 |     |     |
3| 三 郎 | 広 島 |     |     |     |

東京を抽出
太 郎
二 郎

広島を抽出
太 郎
二 郎
三 郎

大阪を抽出
太 郎

こういった形は可能でしょうか?
ご存知の方がいらっしゃいましたら是非ともご教授ください。

やってみた方法は

=QUERY({
QUERY('シート1'!A2:E500,"select C where B = '東 京'");
QUERY('シート1'!A2:E500,"select C where C = '東 京'");
QUERY('シート1'!A2:E500,"select C where D = '東 京'");
})

強引かもしれませんがこれで抽出はできました。
が値がない列に対して#N/Aとでてしまうのを空白にしたいです。

===修正===
ご指摘ありがとうございます。
無知なため色々と不備があり申し訳ありません。。。

A列に氏名、B列〜G列に地域名(東京・大阪・福岡・広島・岡山・山口)の値があるリストがあります。
B列〜G列の条件が一致する氏名のリストを抽出したいです。
地域名は順番が不規則に配置されており同じ行に同じ地域名はありません。

こちらの記述で抽出はできたのですが、列に値がない場合に#N/Aという値が入ってしまいます。
I2のセルに

=QUERY({
QUERY(A1:G200,"select A where B = '東京'");
QUERY(A1:G200,"select A where C = '東京'");
QUERY(A1:G200,"select A where D = '東京'");
QUERY(A1:G200,"select A where E = '東京'");
QUERY(A1:G200,"select A where F = '東京'");
QUERY(A1:G200,"select A where G = '東京'");I1

})

と記入しました。できたら#N/Aという値は削除してリストに抽出がしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/21 09:06

試しに提示の関数を実行しましたが、#ERRORでしたよ。
papinianus

2018/05/21 12:24

上のかたのご意見もそうですが、もう少し実際にそったかたちで、やりたいことやったことを書いていただけると回答が得られると思います。色々なものを取捨する仮定で解決に必要な情報を意図せず省略している可能性があります。私はなぜこのような不規則なデータのならびをしているのか、結果として得たいものが何なのかが分からないので提案ができませんでした
退会済みユーザー

退会済みユーザー

2018/05/21 13:35

#ERRORである、ということも踏まえ、気になる点。意図しているのは、「select A~」じゃないですか?あと、ご自身もQUERY関数を使用されていますが、現状、GASは関係ないですし、不要です。タイトルの修正及びタグを削除したほうが良いと思いますよ。
guest

回答1

0

ベストアンサー

I1に絞り込み用のキーワードが入力されていると仮定して、ORを使うほうが敷居が低いかと思います。
6列ありますのでやや冗長かとは思いますけども。

できたら#N/Aという値は削除してリストに抽出がしたいです。

こちらはIFERRORで囲めばよいでしょう。

ということで、以下のようにすればよいのではないでしょうか。

=IFERROR( QUERY( A1:G200, "SELECT A WHERE B='"&I1&"' OR C='"&I1&"' OR D='"&I1&"' OR E='"&I1&"' OR F='"&I1&"' OR G='"&I1&"'" ), "")

※I1はデータの入力規則リストの範囲をB1:G200に指定し、プルダウンによる選択式にすれば良いと思います。

投稿2018/05/21 23:40

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Cabe

2018/05/22 00:19

バッチリできました!!!理想の形です!!! ありがとうございます!!! selectを使うときにセルを指定するには&で囲わないといけないんですね!! 勉強になりました!!
退会済みユーザー

退会済みユーザー

2018/05/22 00:54

何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問