Excel

INDIRECT脱却のススメ【#Excel #関数 #上級者】

あなたは
INDIRECT関数を
使っていますか。

INDIRECT関数は
少し
凝った
システムを
作る
ときに
とても
重宝する
関数ですが、
それだけに
扱いの
難しい
関数でも
あります。
さらに、
若干
困った
特性も
持って
います。

ここでは、
INDIRECT関数を
使わずに
同等の
機能を
実現する
方法を
紹介します。

結論:INDEX関数

INDEX関数を
使いましょう。

INDEX関数は
引数に
セルの
範囲と、
その中での
行番号と
列番号を
指定する
ことで
セルの
値を
取り出す
関数です。

このように
設定
することで、
シートの
1行
2列に
ある
セル、
すなわち
B2の
値を
取得する
ことが
できます。

ここから
下では
INDIRECT関数と
比較した
INDEX関数の
メリットと
デメリットを
紹介して
いきますが、
ここまでの
説明で
「なるほど」と
思った
あなたは
ここから
下を
読む
必要は
特に
ないかも
しれません。

もしも
あなたが
「INDIRECTでも
別にいいじゃん」と
思ったなら、
ぜひ
この下を
読んでみて
ください。

メリット

行と 列の 指定が シンプル

INDIRECT関数で
セルを
指定する
場合、
主に

=INDIRECT(“R1C2“,FALSE)
のような
形で
記載
します。

行番号と
列番号が
別の
セルに
格納
されている
場合には、

=INDIRECT(“R”&B12&”C”&C12,FALSE)

となり、
文字列の
結合の
分、
式が
長く
なって
います。

一方
INDEX関数では、
先の
画像と
同じように

=INDEX(1:1048576,1,2)


記載
します。

行番号と
列番号が
別の
セルに
格納
されている
場合でも、

=INDEX(1:1048576,B12,C12)

シンプルに
書けて
います。

別シートの 指定が シンプル

別シートを
指定する
場合は

=INDEX(Sheet2!1:1048576,B12,C12)

このように
なります。

先の
例に
加えて、
シートの
参照を
追加している
だけ
ですので、
わかりやすい
形に
なっています。

動作が 軽い

一つや
二つ
使った
程度では
あまり
違いは
出ないのですが、
INDIRECT関数は
実は
動作が
少し
重く
なっています。

詳しくは
説明
しませんが、
どの
セルを
参照して
いるのかを
エクセルが
把握することが
できなくなる
ためです。

デメリット

別ファイルの セルの 指定が 難しい

INDIRECT関数では、
別の
ブックに
保存された
情報を、
ブックを
開く
ことなく
参照する
ことが
できますが、
INDEX関数の
場合は
ブックを
開かずに
参照する
ことは
できません。

対象となる
ブックを
開いて
おけば
別ブックの
情報を
参照する
ことは
可能ですが、
別ブックに
ある
情報を
ブックを
開くことなく
参照したい
という
目的には
沿わない
でしょう。

まとめ

INDIRECT関数を
使っていない
あなたは、
特に
この
記事から
得られる
ものは
なかった
かも
しれません。

ですが、
いつか
INDIRECT関数を
必要とする
時が
来たときに、
本当に
それは
INDIRECT関数で
なければ
ならないのか、
この記事を
思い出して、
一度
考えてみて
ください。

INDIRECT関数を
使っている
あなたは、
なるべく
INDEX関数で
賄えるよう、
考え方を
変えてみると
いいかも
しれません。

きっと
この方法で、
あなたの
困りごとの
ほんの
少しが
解決できる
ことと
思っています。