web-dev-qa-db-ja.com

Googleスプレッドシートクエリを使用して、各列を手動で入力せずに広範囲の列を選択する

データをクエリする列が数十個あります。これを行うために以下のようなものを使用していますが、もっと簡単な方法があるのだろうか?たとえば、"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,.......

各列を手動で入力する代わりに、「範囲」に基づいて列を選択することは可能ですか?

4
Mr. B

次のような式を使用して、列名のカンマ区切り文字列を生成できます。

=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はコンマで結合します
2
user135384