こんにちは!
今回はExcelの強力な関数の一つである
「INDIRECT関数」についてご紹介します。
この関数は、他のセル参照や名前付き範囲を
動的に変更する際に非常に役立ちます。
初心者の方でも理解できるように、
丁寧に解説していきますので、ぜひ最後までお読みください。
今回は「INDIRECT関数」について
初心者でも理解できる様に
丁寧に解説をしていきます!
目次
1. INDIRECT関数とは?
INDIRECT関数の概要
INDIRECT関数は、文字列として与えられた
セル参照を実際のセル参照として解釈し、
そのセルの値を返します。
これにより、動的にセルの参照を変更することができます。
INDIRECT関数の構文
=INDIRECT(参照文字列, [A1])
- 参照文字列: 参照するセルまたは範囲のアドレスを文字列として指定します。
- A1: 省略可能。TRUE(省略時のデフォルト)はA1形式、
FALSEはR1C1形式の参照を使用します。
2. INDIRECT関数の基本的な使い方
例1: 基本的な使用例
例えば、セルA1に「B2」という文字列が入力されている場合、
INDIRECT関数を使ってB2セルの値を参照することができます。
セルA1: B2
セルB2: 100
この場合、セルC1に次のように入力します。
=INDIRECT(A1)
この式は、セルA1の値を参照し、
その文字列「B2」をセル参照として解釈し、
セルB2の値である100を返します。
例2: 名前付き範囲を使用
名前付き範囲を動的に参照することもできます。
例えば、範囲「Sales」がA1からA10までの範囲に設定されている場合、
INDIRECT関数を使用して動的に参照することができます。
セルB1に次のように入力します。
=INDIRECT("Sales")
この式は、名前付き範囲「Sales」を参照し、その範囲内の値を取得します。
3. INDIRECT関数の応用例
応用例1: 複数シートのデータを動的に参照
複数のシートに分かれたデータを動的に参照する場合、
INDIRECT関数を使用すると便利です。
例えば、シート名が「Sheet1」「Sheet2」「Sheet3」で、
それぞれのシートに同じ構造のデータがあるとします。
セルA1: Sheet1
セルA2: Sheet2
セルA3: Sheet3
各シートのセルB2の値を参照するには、次のように入力します。
セルB1:
=INDIRECT("'" & A1 & "'!B2")
セルB2:
=INDIRECT("'" & A2 & "'!B2")
セルB3:
=INDIRECT("'" & A3 & "'!B2")
この式は、それぞれのシート名を参照し、そのシートのセルB2の値を返します。
応用例2: 動的な範囲選択
動的に範囲を変更する際にもINDIRECT関数は役立ちます。
例えば、月ごとのデータを参照する場合、
月を指定するセルを使用して動的に範囲を選択します。
セルA1: 1(1月) セルA2: 2(2月) セルA3: 3(3月)
セルB1: 10 セルB2: 20 セルB3: 30
セルC1に次のように入力します。
=INDIRECT("B" & A1)
この式は、セルA1の値(1)を参照し、セルB1の値(10)を返します。
セルA1を変更することで、参照するセルも動的に変更されます。
4. INDIRECT関数を使用したVBAコード
VBAを使用してINDIRECT関数を実行する方法も紹介します。
VBAを使うことで、さらに自動化が進みます。
Sub DynamicRangeReference()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' 月を指定するセルを設定
Dim monthCell As Range
Set monthCell = ws.Range("A1")
' INDIRECT関数を使用して動的に範囲を参照
Dim dynamicValue As Variant
dynamicValue = Application.WorksheetFunction.Indirect("B" & monthCell.Value)
' 結果を表示するセルを指定
ws.Range("D1").Value = dynamicValue
End Sub
このスクリプトは、シート「Sheet1」のセルA1の値に基づいて
動的にセルB1からB12までの値を参照し、結果をセルD1に表示します。
5. まとめ
INDIRECT関数は、Excelの中でも特に柔軟性の高い関数です。
動的にセル参照や範囲を変更できるため、
複雑なデータ操作や分析に非常に便利です。
ぜひ、この記事を参考にしてINDIRECT関数を活用してみてください。
これからも一緒に学んでいきましょう!