熊本大学大学院教授システム学専攻
目次:
【第3回】アプリケーションソフト:Office系Tool
第1章
第3章

絶対参照の補足

【本節の目的】
絶対参照に関する補足を行います。

相対参照と絶対参照の合わせ技 (複合参照)

[演習 31]
前節で保存した「ex4.sxc」に適当な名前でシートを追加し、 そのシート上で、以下の九九のサンプルをテキストを参考に実行し、 最終的に九九(実際には五の段まで)の表を完成しなさい。 完成後は、「ex4.sxc」に上書き保存しなさい。

相対参照と絶対参照だけでは、 コピー(オートフィル)がうまく働かないことがあります。
下図の九九の一部 (九九ではなく、五五?です)を例として考えてみましょう。

セル B2 に式を入力し、これをコピー(オートフィル)して、 表を完成することにします。
まず、B 列を完成させることを考えてみますと、 「= A2 * $B$1」のように、セル B1を絶対参照すれば、 縱にオートフィルすることでうまくいきますね。

ところが、セル B2を横方向にオートフィルしたらどうでしょう?

おかしなことになりましたね。理由を確かめるために、 セル E2 の式を見てみると、「= D2 * $B$1」 に、なっています。

これは、セル B2 の内容を考えると当前の結果です。
なぜなら、セル B2 の「= A2 * $B$1」を横方向にオートフィルすると、 コピー対象セルが一つずつ右にシフトするたびに、 被乗数のセル A2 は相対参照なので、 一つずつ右シフトすることになります。本当は、 セル A2 である「2」との掛算をしなければならないのに、 セルごとに変わってしまっていたのです。一方、乗数は、 列ごとに変わらなければいけないのに、絶対参照されているセル $B$1 なので、 常に「2」となっています。

それでは、セル B2 を「= $A$2 * B1」とすれば、上の問題は一応は解決できますが、 これでは、先程とは逆に、縦方向にオートフィルしたときに、 同じ様におかしくなってしまいます。

このようなときに、うまくコピーが働くよう、 相対参照と絶対参照を複合的に利用できる仕組が下表のように用意されています。

表記例 参照方法 コピー(オートフィル)したとき参照するセル
$A2 列を絶対参照し、行は相対参照 横方向に(同じ行で)オートフィルしたときに、同じセルを参照する。 縱方向に(同じ列で)オートフィルしたときには相対参照を行う。
A$2 列を相対参照し、行は絶対参照 縱方向に(同じ列で)オートフィルしたときに、同じセルを参照する。 横方向に(同じ行で)オートフィルしたときには相対参照を行う。

(註) 絶対参照を用いるときは、参照するセルをマウスでクリックした後、 Shift + F4 (Shiftキーを押しながらF4キーを押す)で、良かったですが、 実は、再度 Shift + F4 を行うと、行のみ絶対参照になり、 もう一度 Shift + F4 を行うと、列のみ絶対参照となります。 更に、Shift + F4 を行うと、行・列ともに(「$」の付かない)相対参照に戻ります。

上の複合参照を少し試してみましょう。
まず、セル B2 に、「=$A2」と入力して、 縦方向と横方向にオートフィルしてみましょう。 そうすると、以下のようになりますね。

つぎに、セル B2 に、「=A$2」と入力して、 縦方向と横方向にオートフィルしてみましょう。 そうすると、以下のようになります。

この場合、みな「2」になっていますが、縦方向と横方向では、 動作が異っています。

縦方向にオートフィルされたセルは、みな「A$2」となっています。 これは、もともと、縦方向にオートフィルするときには、 縦方向の相対位置は変わらないので、行番号だけが自動的に(相対的に)変わります。

それに対して、横方向にオートフィルされたセルは、 列要素が相対参照で変わっています。ただし、 今回は自分の一つ左のセルを参照することになっているので、 同じ物が次々にコピーされ、結果としてみな同じになっています。

最後に、セル B2 に、「=B$1」と入力して、 縦方向と横方向にオートフィルしてみましょう。 そうすると、以下のようになりますが、もう大丈夫ですよね?

以上の複合参照を使えば、九九の表は、簡単に完成できますね。 つまり、セル B2 に、「= $A2 * B$1」を書き、後は、 縦横にオートフィルを行い完成です。

試しに、セル E5 を確認してみると、 「= A5 * E1」(実際には、「= $A5 * E$1」) が書きこまれているのが確認できます。 (下図参照)

Copyright Kenichi Sugitani 2005, All Rights Reserved