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関数 を組み合わせることで、コピー時にセル参照を自動的に変更させることが可能になります。
この方法を活用し、スプレッドシートの作業をより効率的に行いましょう。
コメント