数式では「A1」などとシート上のセルを参照するが、「$A$1」「$A1」などと$を付けた参照方法もある。$を付けない「A1」を相対参照、行列ともに$を付けた「$A$1」を絶対参照、どちらか一方に$を付けた「$A1」や「A$1」を複合参照という。これらは数式をコピーしたときの振る舞いが異なる。

コピー時の振る舞いが違う

 相対参照では、コピー元とコピー先の位置関係に応じて参照するセルが変化する。一方、絶対参照はコピーしても一切変化しない。また、複合参照はこれらの中間で、$を付けた部分だけが変化しない。

 Q11では、1行目(掛けられる数)とA列(掛ける数)にそれぞれ1~9の数字が入力されている。この場合、掛けられる数は常に1行目、掛ける数は常にA列を参照しなければならない。従ってB2セルの数式では、掛けられる数が行を1に固定した「B$1」、掛ける数は列をAに固定した「$A2」となる(図14左)。

図14 Q11の正解。右のようにシートを数式表示モードにすると、コピーされた数式が変化する様子や$記号の意味が分かる。「$A2」は右方向にコピーしても変化しないが、下方向だと$A3、$A4、……と変化する。一方の「B$1」は右方向コピーではC$1、D$1、……と変化するが、下方向コピーでは変化しない。「=B$1*$A2」は「(同じ列の1行目)*(同じ行のA列)」と考えればよい
[画像のクリックで拡大表示]

 本当にうまくいったのか数式を確かめたのが図14右だ。図15のオプション設定で数式を表示した。「B$1」は右方向コピーでは列のみ変化するが、下方向コピーでは変化しない。一方の「$A2」はその逆になる。これにより、いずれのセルでも「同じ列の1行目」と「同じ行のA列」を掛け算する数式になっている。

<font color=図15 数式表示モードにするには「ツール」→「オプション」の「表示」タブで「数式」にチェックを入れる。Excel2007では「数式」タブの「数式の表示」ボタン">
図15 数式表示モードにするには「ツール」→「オプション」の「表示」タブで「数式」にチェックを入れる。Excel2007では「数式」タブの「数式の表示」ボタン

数式「=SUM(B$2:B2)」は合計範囲の先頭を2行目に固定して、末尾を相対参照にしている。これをC3セル以下にコピーすると、「B$2」は変化せず、「B2」の部分だけがB3、B4、……と変化する。つまり、B2を先頭にして合計範囲が広がっていくわけだ。結果、数式が入力されている行までの累計が求められる(図16左)。数式を表示したのが図16右。合計範囲が広がっていく様子が明解だ。

図16 Q12の正解と数式表示モードで見たところ。この数式を下方向へコピーすると「B2」の部分はB3、B4、……と変化するが、「B$2」の部分は変化しない。結果的にB2セルからその行までの売上を合計した累計が得られる
[画像のクリックで拡大表示]