No.012
参照式の参照セルが移動しても固定されるようにしたい 《INDIRECT》
2003/2007/2010/2013
セルを参照している数式(参照数式)の番地を固定したい、というお問い合わせです。
セルに例えば「=A2」という参照数式があったとして、参照されているセルA2の内容をセルB4に移動すると、「=B4」といった具合に、参照数式も移動した番地へと移動し、同じ内容を参照するようにしてくれるのです。
ん?では、「=$A$2」とすればいいんでは・・・と思った方、一度やってみてください。
番地を固定した参照数式であれ、同じように、参照元を移動すると参照数式も番地を移動してくれます。
もちろん、これが既定となっている以上、Excelにおいてはこの方が便利なケースが圧倒的に多いわけです。
ではどうすれば、参照元を移動しても位置が固定されるような参照式が作成できるのでしょうか。
そのような場合はINDIRECT関数(関数の分類: 検索/行列)を使ってみてください。
INDIRECT関数は、普段の参照式の「=」を省いた参照文字列を引数に指定します。
例えば「=A2」であれば、「=INDIRECT("A2")」という具合です。
INDIRECT関数の引数は、セル参照でない文字列ですから、引数にしているセルが移動したとしても数式の設定内容は変わりません。
ただし、上図のように参照元が空白の場合は「0」を返しますので、空白としたい場合は、次のようにIF関数などを使って工夫してください。
=IF(INDIRECT("A2")=0,"",INDIRECT("A2"))
ヘルプmemo
<INDIRECT関数 (検索/行列関数)>
指定される文字列への参照を返します。
数式: =INDIRECT(参照文字列, 参照形式)
引数:
参照文字列 …文字列でセル参照を指定
参照形式 …TRUEまたはFALSEを指定
TRUEまたは省略 …引数[参照文字列]をA1形式で指定する場合
FALSE …引数[参照文字列]をR1C1形式で指定する場合
ヒント:
A1形式の参照は「A2」といった通常のセル参照、R1C1形式はセルA2の場合
「R2C1」という行(R)と列(C)を数値で指定する参照です。