EXCEL/動的にセル指定をする †
Excelでセル参照を行う場合、次のようにセル名を用いて式を記述する。
=A1*A2
これでセルA1とA2の内容を掛け合わせた結果を得ることが出来る。
通常の使用ではこれで不便はないのだが、参照先を動的に決定する必要が出てきたときには困ってしまう。このような場合は、INDIRECT関数を用いる。
- セルA1〜A5まで「あいうえお」と一文字ずつ記入されている。
- 「あいうえお」の中から、セルC1で指定される位置の文字を得たい。
- 結果は、セルC2に表示するものとする。
このような場合、セルC2には以下のように記述すればよい。
=INDIRECT("A" & C1)
- INDIRECTは、指定されるセル参照を返す関数である。
- まず、引数として渡した「"A" & C1」が評価され、"A3" という文字列が生成される。
- INDIRECT("A3")となり、セルA3の値である「う」を得ることが出来る。
応用 †
- セル参照の文字列を動的に指定できるので、参照元シート名も変数にすることが出来る。
- 各シート(2007年前期〜2008年後期)のA1セルに合計値が記述されているとする。
| A | B | C | D | E | F | G |
---|
1 | シート名 | 合計 | | | | | |
---|
2 | 2007年前期 | =INDIRECT($A2&"!$A$1") | | | | | |
---|
3 | 2007年後期 | =INDIRECT($A3&"!$A$1") | | | | | |
---|
4 | 2008年前期 | =INDIRECT($A4&"!$A$1") | | | | | |
---|
5 | 2008年後期 | =INDIRECT($A5&"!$A$1") | | | | | |
---|
6 | | | | | | | |
---|
- 2007年前期の行の場合。
- 引数として渡した「$A2&"!$A$1"」が評価され、"2007年前期!$A$1"という文字列が生成される。
- INDIRECT("2007年前期!$A$1")となり、"2007年前期"というシートの"$A$1"が参照される。
注意 †
- エクセルとしては位置指定文字列は、単なる関数の引数の文字列としか見てくれない。したがってセルを移動したときに位置に合わせて自動的に書き換えてくれたりはしない。