web-dev-qa-db-ja.com

QUERYを使用して2つの列をマージするにはどうすればよいですか?

次のような列を含むマスタースプレッドシートがあります。

FirstName   LastName   Gender   etc, etc, etc

そのマスターシートから、他の列のいずれかでフィルター処理する別のシートにインポートする必要があります。新しいシートでは、FirstNameLastNameを結合した単一列の名前が必要です。

現在使用しているクエリは次のとおりです。

=query(importrange($SPREADSHEET_KEY, "Full Overview!A2:AH"), "select Col1, Col2, Col5 where Col8 contains 'Migrators'", 0)

マスターシートのCol1とCol2を新しいシートのCol1にマージし、新しいシートのCol2にCol5を配置する必要があります。

5
Jonathanb

簡潔な答え

QUERY select引数は列をマージできません。

説明

QUERY組み込み関数は、 Google Visualization API Query Language を使用します。連結演算子は含まれていません。 1つの選択肢は、データを連結することです。

名と姓の列がそれぞれ列AとBであると仮定します。

例1

補助列を追加して、ソースシートの目的の列を連結し、この列をIMPORTRANGEに含めます。行2の空のセルに次の数式のいずれかを追加します。

  • =A2&" "&B2。必要に応じて記入してください。
  • =ARRAYFORMULA(A2:A&" "&B2:B)(ヒント:空の行を削除するか、FILTERを使用して空でない行のみを連結します)。

例2

いくつかのIMPORTRANGE、連結演算子&および配列を使用します。

 = ARRAYFORMULA(
 QUERY(
 {
 importrange($ SPREADSHEET_KEY、 "Full Overview!A2:A")&
 ""&
 importrange($ SPREADSHEET_KEY、 "Full Overview!B2:B"))、
 importrange($ SPREADSHEET_KEY、 "Full Overview!C2:AH")
}、
「Col8、Col8に「移住者」が含まれるCol1、Col2、Col5を選択」、
 0 
)
)
6
Rubén

特定の場合に Google配列リテラル表現 を使用して結合を実現できます。

=query({Sheet1!A:B, Sheet2!C:D}, "select Col1, Col3 where Col2 = Col4")

これは、両方のテーブルの行数が同じ場合にのみ機能します。

4
rehan