Googleスプレッドシートで INDIRECT関数をIF関数内に使用する方法

クラウドサービス

Googleスプレッドシートの INDIRECT関数IF関数 内で使用することで、特定のシートやセルを動的に指定することができます。しかし、適切な書式を使用しないとエラーが発生する可能性があります。

INDIRECT関数をIF関数内で使用する基本

INDIRECT関数は、指定されたセル参照を動的に取得できる関数です。たとえば、次のような式を使用すると、AJ13セルの値(シート名)を参照し、そのシートのC3セルの値を取得できます。

=IF(INDIRECT(AJ13&"!C3"), AJ13, "")

この式では、AJ13セルの値をシート名 として取得し、そのシートの C3セルの値 を参照しています。

コピー時にC3部分を変化させる方法

スプレッドシートでは、通常セル参照をドラッグしてコピーすると、行番号が増加していきます。しかし、INDIRECT関数内では相対参照ではなく文字列として扱われるため、そのままでは自動的にC3 → C4 → C5と変化しません。

これを実現するには、ROW関数を組み合わせる方法が有効です。

例。

=IF(INDIRECT(AJ13&"!C"&ROW(A1)+2), AJ13, "")

この式では、ROW(A1) が 1 から始まり、行をコピーするごとに増加します。C3 から始めるため、+2 して調整しています。

具体的な活用例

たとえば、以下のようなデータがあり、異なるシート名がAJ列に格納されているとします。

シート名(AJ列) 参照セル 結果
1 Sheet1 C3 〇〇
2 Sheet1 C4 △△
3 Sheet1 C5 □□

この場合、=IF(INDIRECT(AJ13&"!C"&ROW(A1)+2), AJ13, "") を記入し、下にコピーすれば自動的にC3 → C4 → C5…と参照するセルが増えていきます。

INDIRECT関数の注意点

  • 参照するシート名が誤っているとエラーになります。
    → 必ず シート名が正しいか 確認してください。
  • INDIRECT関数は リアルタイムで更新される ため、大量に使用するとスプレッドシートが重くなる可能性があります。
  • シート名にスペースが含まれる場合は、引用符で囲む必要があります。
    → 例: INDIRECT("'"&AJ13&"'!C3")

まとめ

Googleスプレッドシートの INDIRECT関数をIF関数内 で使用することで、異なるシートやセルの値を動的に取得することができます。特に、ROW関数 を組み合わせることで、コピー時にセル参照を自動的に変更させることが可能になります。

この方法を活用し、スプレッドシートの作業をより効率的に行いましょう。

コメント

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