Googleスプレッドシートで関数内で別セルの文字列を参照する方法

クラウドサービス

Googleスプレッドシートでは、関数内で別のセルを参照して動的にデータを取得することができます。特に、QUERY関数を使う際に、参照範囲を他のセルにまとめておくと、複数の場所で使う際に便利です。しかし、場合によっては期待通りに動作しないこともあります。この問題を解決する方法を解説します。

QUERY関数を使ったセル参照の基本

まず、QUERY関数の基本的な構文は以下の通りです。シートの範囲を指定し、SQLライクなクエリを実行することができます。

=QUERY(範囲, "select Col1, Col2, Col3 where Col4 = '条件' ")

ここで重要なのは、「範囲」に指定するセル範囲です。例えば、複数のシートをまたいだ範囲を指定する場合、{‘シート1!A:I; シート2!A:I’}のように書くことができます。

参照範囲を他のセルにまとめる方法

ご質問の通り、複数のQUERY関数で同じ範囲を参照したい場合、参照範囲を別のセルにまとめると便利です。しかし、QUERY関数内で他のセルを直接参照して範囲を動的に設定することはできません。例えば、’参照範囲’!A1の内容をQUERY関数の範囲として使用することはできません。

これを解決するためには、INDIRECT関数を使用して、セルの内容を参照範囲として動的に扱う方法が有効です。

INDIRECT関数を使った動的参照の実現

INDIRECT関数を使うことで、セル内の文字列を範囲として解釈させることができます。例えば、’範囲’シートのA1セルに「’シート2!A:I;シート3!A:I’」という範囲を入力した場合、次のように関数を設定します。

=QUERY(INDIRECT('範囲'!A1), "select Col1, Col2, Col3 where Col4 = '条件' ")

これにより、’範囲’シートのA1セルに記載された範囲が、QUERY関数内で動的に参照されます。これで、50箇所のQUERY関数で同じ範囲を使っている場合でも、’範囲’シートのA1セルを変更するだけで全ての関数が更新されます。

動的参照範囲の変更例

例えば、シートの参照範囲を追加したい場合、’範囲’シートのA1セルに「’シート2!A:I;シート3!A:I;シート4!A:I’」と追加すれば、QUERY関数での参照範囲が自動的に更新されます。

この方法により、シートの追加や範囲の変更を一箇所で行うだけで済むため、大規模なスプレッドシートでも管理が簡単になります。

まとめ

GoogleスプレッドシートでQUERY関数の参照範囲を動的に管理したい場合、INDIRECT関数を使って、他のセルに記載された範囲を参照する方法が最適です。これにより、複数のQUERY関数で同じ範囲を使っている場合でも、参照範囲を一箇所で管理でき、効率的にシートを運用することができます。

この方法を活用することで、スプレッドシートのメンテナンスを大幅に簡素化できるので、ぜひ試してみてください。

コメント

タイトルとURLをコピーしました