これらのクエリを作成して、列が追加または削除されるたびに更新する必要がないようにする方法はありますか?
この問題を解決するためにクエリで名前付き範囲を使用することは可能ですか?
はい、組み込みの列ヘッダーの代わりに名前付き範囲を使用することもできますが、基本的な考え方はこれに対する他の回答と同じであり、このサイトの他の同様の質問が示唆しています:動的SQL文字列を作成するようにスプレッドシートを設定する必要があります。
名前付き範囲にそれぞれ対応しているJ
としましょう。G
Grades
Class
次のアプローチは、列が列AとZの間にある場合にのみ機能します。
CELL("address",Grades)
戻り"$J:$J"
ます。列参照MID(CELL("address",Grades),2,1)
を取得するには、getを使用します"J"
。最終的な式は
= QUERY(B:J、 "SELECT AVG("&
MID(CELL( "住所"、Grades)、2,1)&
")GROUP BY"&
MID(CELL( "住所"、クラス)、2,1))
次のアプローチはすべてのケースで機能します
COLUMN(Grades)
整数(1、2、3などの形式の数)を返します。SQLステートメント引数を作成する式を簡略化するには、配列を使用してSQLにCOL1、COL2などの形式の列参照を使用させることをお勧めします表記({B:J}
)。最終的な式は
= QUERY({B:J}、 "SELECT AVG(Col"&COLUMN(Grades)-1& ")GROUP BY Col"&COLUMN(Class)-1)
デモスプレッドシート
参考文献
Googleスプレッドシートで配列を使用する-Googleドキュメントエディタヘルプ