🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

4183閲覧

GoogleスプレッドシートのJOIN関数で、QUERYやIMPORTRANGEを引数には持ってこれない?

sesamegg

総合スコア12

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2020/12/10 02:15

複数の管理表から、会計データへのインポートデータを作成しようとしています。
それぞれの管理表の項目と列は統一されていないため、query関数で引用してくる形を取りました。

ABCDEFGH
備考生成数式URLシートセル範囲セル列数フラグ列セル順番(シートごと)
QUERY(IMPORTRANGE(C2,D2&"!"&E2),"select "&H2)http://****[シート名]A:M1313Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9, Col10, Col11, Col12, Col13

項目数の入れ替えまでは上記の数式で対応できています。
が、項目数がインポートデータより多い場合に、「その他」列に情報をまとめようとしたときに詰まりました。
まとめる際単純にJOIN関数でくくってみたところ、

=JOIN(" ",QUERY(IMPORTRANGE(C2,D2&"!"&E2),"select "&H2))

「JOINの範囲は単一行か単一列にしてください」
とのエラー ならばと

=arrayformula(CONCATENATE(QUERY(IMPORTRANGE(C2,D2&"!"&E2),"select Col1")," ",QUERY(IMPORTRANGE(C2,D2&"!"&E2),"select Col2")))

としたところ、すべてくっついて長大な1セルの文字列になってしまいました。
配列の要素を横に一つずつつなげるということは、関数では難しいのでしょうか?

調べてもうまく情報を見つけることが出来なかったため、ご教授の程よろしくお願い申し上げます。。

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問の件名

GoogleスプレッドシートのJOIN関数で、QUERYやIMPORTRANGEを引数には持ってこれない?

に答えるなら「持ってこれます」という回答になります。

内容を見る限りエラーとなっているのは記載の通り 「JOINの範囲は単一行か単一列にしてください」 に反しているからです。 1行だけQury importrange で取得すれば JOINで結合できます。

範囲を結合する場合は TEXTJOIN という関数がありますが、希望される行毎ではなく全部結合となります。

今回のようなケースの場合、TEXTJOINにSPLIT、TRANSPOSEを組み合わせて、結果として行毎の結合を返すことは出来ますが、面倒な式になるのとデータ量が多いと重くなるのであまりお勧めしません。

GASで処理するか中間に作業シート(作業列)を入れて処理する方がよいかもです。

投稿2020/12/11 00:22

sawa

総合スコア3002

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

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

sesamegg

2020/12/11 02:27

お世話になります。 まさに、この数式でスパッと一発で対応できるのか、難しいので別の方法を試す方がよいのかという知りたかった部分を回答いただき、感謝いたします。 今回はメンテナンス性を重視したいので、作業列での対応処理にすることにいたします。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問