Excelの関数について(INDIRECT関数)

こんにちは。

今回はExcelのINDIRECT関数というものをご紹介します。INDIRECT関数は引数に指定された文字列の参照を返す関数です。ん?意味がわからないとなると思います。

例えば、引数がB5の場合、B5のセルにある値を見に行きます。そして、B5セルにある文字列がD5の場合、D5のセルの値を取得します。INDIRECT関数はこんな動きをします。一見、何に使うのという感じですが、意外と便利な関数です。

それでは、INDRECT関数をみていきましょう。

INDIECT関数

INDIRECT関数の書式

INDIRECT関数の書式は次のとおりです。

=INDIRECT(参照文字列),[参照形式])

参照文字列

A1形式、または、R1C1形式の参照を指定します。

参照形式

TRUEを指定、または省略をすると、A1形式のセル参照になり、FALSEを指定するとR1C1形式のセル参照となります。

例1

書式を読んでも、意味がわからないと思うので、実際に使ってみてどんな動きをするのか見てみましょう。

図1をご覧ください。B2セルには、=INDIRECT(B5)という数式が入力されています。

図1:INDIRECT関数の使用例

このINDIRECT関数を使った結果である100という数字がどのように取得されているかみてみます。引数がB5なので、B5のセルに入力されている値を見ます。入力されている値はD5となっています。次に、このD5セルに入力されている値見ます。D5セルには100が入力されていますね。INDIRECT関数はこのように100を取得しています。これが=INDIRECT(B5)です。

次にB3セルに入力されている=INDIRECT(“B5″)を見てみましょう。こちらは引数のB5が”(ダブルクウォテーション)で囲まれ、文字列となっています。

=INDIRECT(“B5″)の場合はどのような取得方法になるのでしょうか。引数がB5なので、B5のセルに入力されている値を見ます。ここまでは同じですが、引数に文字列を指定したときは、このB5セルに入力されている値をそのまま出力します。今回の場合はD5です。

ダブルクォーテーションを付けない場合は、D5セルの内容を参照していましたが、ダブルクォーテーションを付けた場合はD5という文字列そのものを出力しています。

INDIRECT関数は上記のようなイメージになります。

なんとなくどのような関数か分かったけど、あんまり使えなさそうな関数だなと思う方もいらっしゃると思います。そこで、INDIRECT関数を使った活用例をみてみましょう。

INDIRECT関数の活用例

INDIRECT関数は例えば、こんな場面で使えます。クラス名と番号を入力すると名前が出る。こんなものを作ってみましょう。イメージは図2です。

図2:INDIRECT関数の活用

青組と赤組の表を準備しました。

クラスと番号(黄色のセル)を入力すると名前が出るようになっています。

名前の部分(水色のセル)にはどのような数式が入力してあるのでしょうか。

答えは次の通りです。

=VLOOKUP(C12,INDIRECT(C11),2,FALSE)

VLOOKUP関数とINDIRECT関数を使っていました。そして、もうひとつ重要になるのが名前の定義です。

実は、青組と赤組の表は、B4からC8のセルに「青組」、E4からF8のセルに「赤組」という名前を定義していました。セルの範囲に名前を付けているということですね。

名前の定義はツールバー「数式」→「名前の定義」で設定することができます。

VLOOKUPの書式はVLOOKUP(検索値、範囲、列番号、[検索方法])でした。検索値は番号をもとに検索したいのでC12になります。

[blogcard url=”https://tom-51.net/pc/excel-function-4″]

次は範囲です。ここがポイントになります。

範囲は=INDIRECT(C11)となっています。C11をみると図2では、青組になっているので、青組を参照することになります。青組は名前の定義でB4:C8と定義したので、=INDIRECT(C11)はB4:C8となるわけです。

もし、C11の内容が赤組の場合は、=INDIRECT(C11)はE4:F8となります。

次の列番号は、範囲の2列目の名前の列を表示させたいので2にします。

これで、クラスと番号を入力すると、名前が表示できるようになるはずです。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする