データをクエリする列が数十個あります。これを行うために以下のようなものを使用していますが、もっと簡単な方法があるのだろうか?たとえば、"Select B:Z where K = X"
または"Select B through Z where K = X"
または"Select * excluding S where K = X"
?
=QUERY(data!B1:J30000, "Select B, C, D, E, F,.......
各列を手動で入力する代わりに、「範囲」に基づいて列を選択することは可能ですか?
次のような式を使用して、列名のカンマ区切り文字列を生成できます。
=arrayformula(join(",", substitute(address(1, column(C:F), 4), "1", "")))
(ここでC:Fは列の範囲の例です)。上記の式は、クエリでの使用に適した文字列C、D、E、Fを返します。オプションで、arrayformula
部分を外に出すことができます。例:
=arrayformula(query(A1:F, "select " & join(",", substitute(address(1, column(C:F), 4), "1", "")) & " where A <> ''"))
C:Fのような短い範囲では、これは明らかに努力する価値はありませんが、M:AT
のようなものがあれば、おそらく時間を節約するでしょう。
column
は列番号を返しますaddress
は、その列の一番上のセルのA1表記を返します(オプション4は、$が使用されないことを意味します)substitute
は行番号1を削除しますjoin
はコンマで結合します