こんにちは、さち です。
先日、エクセルを使っていて
セル番号を直接指定したいということがありました。
普通の文字として打ったセル番号を
そのまま参照セルの指定に使う方法はないだろうか…。
そんな時に役立つのが「INDIRECT」関数です。
エクセルってホント色々な関数があるんですね。
セル番号を直接入力できる「INDIRECT」関数
まずは、「INDIRECT」関数の使い方を確認。
= INDIRECT( セル番号, 記述形式 )
記述形式は「TRUE」「FALSE」のどちらかで記述。
TRUE では、「A1」といった一般的な形式で「セル番号」を記述
FALSE では、「R1C1形式」で「セル番号」を記述する。
省略した場合は「TRUE」になる。
サンプルがこちら。
セル番号の指定は「A4:A6」のような複数指定もできます。
「INDIRECT」関数を使用すると
セルを「文字列」で書いて直接記述できるため
参照するセルをよく変更するような場面で使うと便利です。
「記述形式」は、通常「TRUE(A1形式)」でよいですが
列番号を返す「COLUMN」関数と併用する場合などは
「FALSE(R1C1形式)」の方が便利かもしれません。
「INDIRECT」関数ならセルを挿入しても動かない
参照セルを変更可能にするのに便利な「INDIRECT」関数ですが
逆に、「固定」に使うことで役立つ例も見てみましょう。
- 例えば、このような成績表があります。
テストが行われる毎に「前回との差」を出すようにしましょう。
通常は、セルを指定して「今回の点 - 前回の点」という計算をしますよね。
- 「前回との差」が計算できました。
- 「第3回」のテストが行われたので列を挿入しました。
しかし、「前回との差」に変化はなく「第2回」と「第1回」の差のままです。
- それもそのはず。
セルの移動,挿入を行うと参照セルも自動で移動するのです。
普段ならこの仕様は非常に便利なのですが、今回の場合は逆に不都合…。
- そこで、今度は「INDIRECT」関数を使ってみましょう。
INDIRECT関数 でセル番号を直接指定しました。
- 「前回との差」が計算できました。
- 「第3回」の結果を挿入しました。
今度はちゃんと「前回との差」が「第3回」と「第2回」の差になりました。
- 「INDIRECT」関数を使って「文字列」でセル番号を指定したので
新たなセルを挿入しても参照セルは変更されないわけです。
ただし、「INDIRECT」関数を使う場合は
オートフィルで他の教科の式を入力できません。
今回の例のような場面でオートフィルを使いたい場合は
行の指定に「ROW」関数を使い
「= INDIRECT( "C"&ROW() ) - INDIRECT( "D"&ROW() )」
のように記述しましょう。
(「ROWS」関数でなく、「ROW」関数です。注意!)
【関連記事】
コメント