LoginSignup
naokiyamamoto
@naokiyamamoto (直樹 山本)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Query関数で2つのシートにまたがる結果を結合する方法

解決したいこと

Query関数で配列が異なる2つのシートのデータを結合したいです。

配列が同じだと下記の式で結合ができるのですが

=query({STL!A1:Y1000;OEM!A1:Y1000},"select B,N where R ='TLD'")

今回の場合は配列が違うので結合ができません。
回避策として2つのシートに一度queryで書き出して、それをまた結合するということをしているのですがどうもスタイリッシュでない気がして、1つのシートで完結できないかと思っています。

自分で試したこと

下記のコードで結合したりできないかなと試してみたがエラーが発生して結合ができませんでした。

=query(STL!A1:Y1000,"select B,Q where V ='MATTLD'")+query(OEM!A1:W1000,"select B,N where R ='TLD'")

ぜひ良いアイデア、コードが有りましたらご教授お願い致します。

1

1Answer

色々試してみたところ、以下のようにすることで、Queryの返す行列をシートに展開せずに連結できました。
={QUERY({STL!A1:Y1000},"select Col2,Col17 where Col22 ='MATTLD'");QUERY({OEM!A1:W1000},"select Col2,Col14 where Col18 ='TLD'")}
(連結{~}によって元の列名を失っているためにCol~という列名を使っています。)

これは、以下と同じ意味です。
=QUERY({QUERY({STL!A1:Y1000},"select Col2,Col17 where Col22 ='MATTLD'");QUERY({OEM!A1:W1000},"select Col2,Col14 where Col18 ='TLD'")})

SQLで言えば、「クエリのFROM句には、括弧を付けたサブクエリが書ける」というわけですね。
Query関数の場合は、FROM句は第1引数(データ)で、括弧は波括弧({~})になります。

0Like

Your answer might help someone💌