セルの相対参照と絶対参照

Excel で関数や計算式の中からセルを参照する場合、セルを指定する方法として相対参照と絶対参照の 2 つの方法が用意されています。相対参照で指定したセルが含まれる式をコピーして別のセルに貼りつけると、式の中で相対参照で指定されていたセルはコピーされた位置に合わせて自動で変更されます。それに対して絶対参照で指定していた場合はコピー先でも同じ位置のセルを参照します。ここでは Excel でセルを指定する場合に使用する相対参照と絶対参照について解説します。

(Last modified: )

相対参照とは

相対参照を使ってセルを指定する場合、例えば B 列 2 行のセルを指定するには B2 と記述します。

B2

相対参照は式や関数を入力したセルからの相対的な位置関係を使ってセルを参照したい場合に使用します。相対的な位置とは、記述となるセルから見て 2 つ左で 1 つ上のセルのようなセルの指定の仕方です。

簡単な計算式を相対参照を使ってセルに入力してみます。 D3 セルに次のような式を入力しました。

=B3+C3

相対参照とは(1)

この式では B3 セルに入力されている値と C3 セルに入力されている値を加算して、結果を D3 セルに入力します。計算式を入力したあとで Enter キーを押すと、 D3 セルには計算結果が表示されます。

相対参照とは(2)

この式の中で B3 と C3 は相対参照を使って記述されています。相対参照で記述された場合は =B3+C3 という式は、式が入力された D3 セルから見て 2 つ左にあるセルと 1 つ左にあるセルを加算するという情報を内部的には持っています。 D3 セルから見ると 2 つ左にあるセルは B3 であり、 1 つ左にあるセルは C3 です。

相対参照を使って記述された式をコピーして他のセルに貼りつけると、 B3 と C3 の値を加算するという式ではなく 2 つ左にあるセルと 1 つ左にあるセルを加算するという式がコピーされて貼りつけられることになります。式の内容は、式を貼りつけたセルに合わせて自動的に変化します。

では実際に D3 セルに入力されている式をコピーして D4 セルに貼りつけてみます。

相対参照とは(3)

相対参照とは(4)

D4 セルに貼りつけられた式は =B3+C3 ではなく =B4+C4 に自動的に変更されているのが確認できます。これは D4 セルから見て 2 つ左にあるセルが B4 であり、 1 左にあるセルは C4 だからです。

相対参照とは(5)

このように式や関数の引数に相対参照を使った形式でセルを記述した場合、式や関数をコピーして別のセルに貼りつけると、貼りつけたセルを基準として自動的に式の中で参照するセルが変更されます。式をコピーして同じように計算をするように別のセルに貼りつけたい場合に便利です。

絶対参照とは

絶対参照を使ってセルを指定する場合、例えば B 列 2 行のセルを指定するには $B$2 と記述します。

$B$2

絶対参照は式や関数を入力したセルの位置に関係なく、常に同じ位置にあるセルを参照したい場合に使用します。例えば $B$2 は式が入力されたセルからの相対的な位置ではなく、常に B 列 2 行の位置にあるセルを参照します。

どのような場合に絶対参照が使用されるのかを確認するため、次のような Excel のシートで D4 セルに次のように式を入力します。まずは相対参照を使っています。

=(B4*C4)*(1+C1)

絶対参照とは(1)

この式では B4 セルに入力されている値と C4 セルに入力されている値を乗算して、さらに C1 セルに入力されている値に 1 を加算した値と乗算した結果を D4 セルに入力します。計算式を入力したあとで Enter キーを押すと、 D4 セルには計算結果が表示されます。

絶対参照とは(2)

では D4 セルに入力された式をコピーして D5 セルに貼りつけてみます。

絶対参照とは(3)

絶対参照とは(4)

29.7 という結果を予想していましたが実際には 27 という結果になりました。これはコピーした式がすべて相対参照でセルを参照していたため、 D5 セルにコピーされた式が =(B5*C5)*(1+C2) に自動的に変化されているためです。この式の中の B5 セルと C5 セルは正しいセルを参照していますが、 C2 セルには何も値が入力されていません。

絶対参照とは(5)

今回の式の場合、 C1 セルの値はどのセルから参照する場合も同じ位置にあるセルを参照する必要があります。このように式が記述されたセルに関係なく、常に同じ位置にあるセルを参照したい場合に絶対参照を使います。

それでは D4 セルに入力した式を次のように変更しました。 C1 セルは絶対参照を使って参照しています。

=(B4*C4)*(1+$C$1)

絶対参照とは(6)

計算式を入力したあとで Enter キーを押すと、 D4 セルには計算結果が表示されます。

絶対参照とは(7)

では D4 セルに入力された式をコピーして D5 セルに貼りつけてみます。

絶対参照とは(8)

絶対参照とは(9)

今度は正しい計算結果が表示されました。コピーした式の中で相対参照で参照していたセルは貼りつけ先のセルに合わせて自動的に変更されていますが、絶対参照で参照していた $C$1 セルはセルが変わっても同じ位置の $C$1 セルを参照しているためです。

絶対参照とは(10)

このように式や関数の引数に絶対参照を使った形式でセルを記述した場合、式や関数をコピーして別のセルに貼りつけても同じ位置にあるセルを参照します。常に同じ位置にあるセルを参照したい場合に便利です。

複合参照とは

相対参照と複合参照を組み合わせたものが複合参照です。相対参照では行も列も相対的な指定となり、絶対参照では行も列も指定した位置で固定となりましたが、複合参照の場合は列または行のどちらかだけが固定で、もう片方は相対的な指定となります。

複合参照の場合、固定にする方にだけ $ を付けます。例えば列を固定にして B 列 2 行のセルを指定するには $B2 と記述します。

$B2

例えば行を固定にして B 列 2 行のセルを指定するには B$2 と記述します。

B$2

では実際に試してみます。下記のように 3×3 のマスの中に乗算をした結果を表示するものを作成する場合で考えてみます。

複合参照とは(1)

すべての一つ一つ数式を入力していけばできますが、今回はいずれかのセルに数式を入力したあとで、他のセルにコピーできるように数式を記述してみます。各セルに実際に入力される数式は次のようなものになります。

複合参照とは(2)

数式は =[横のセル]×[縦のセル] ですが、横のセルは行の値である 2 が常に固定で列の値は相対的です。また縦のセルは列の値である B が常に固定で行の値は相対的です。

複合参照とは(3)

よって最初に C3 セルに複合参照を使って次のように数式を入力します。

=C$2*$B3

複合参照とは(4)

Enter キーを押すと、数式の結果がセルに表示されます。

複合参照とは(5)

次に C3 セルをクリックしてから Ctrl + C キーで C3 セルの数式をコピーしたあと、 C3:E5 の範囲を選択します。そのあとで Ctrl + V キーで先ほどコピーした数式を貼りつけてください。

複合参照とは(6)

複合参照とは(7)

複合参照とは(8)

すべてのセルに数式が貼りつけられました。複合参照でセルを参照しているので、相対参照になっている部分は入力されたセルの位置に応じて自動的に変更され、絶対参照になっている部分はセルの位置に関わらず同じ値が使用されています。

入力済のセルの参照方法を変更する

セルに数式や関数を入力し、数式や関数の中でセルを参照している場合、セルを選択したあとで >F4 キーを押すことでセルの参照方法を相対参照から絶対参照へ変更することができます。

実際に試してみます。下記のように D2 セルに =B2+C2 と数式を入力しました。

入力済のセルの参照方法を変更する(1)

数式の中の B2 および C2 はどちらも相対参照で入力されています。それでは B2 の部分の参照方法を変更してみます。数式の中で B2 部分を選択するか B2 のあとカーソルを置いてください。

入力済のセルの参照方法を変更する(2)

>F4 キーを押してください。すると数式の中で B2 の部分が $B$2 と絶対参照に変更されました。

入力済のセルの参照方法を変更する(3)

もう一度 F4 キーを押してください。すると数式の中で $B$2 の部分が B$2 と複合参照に変更されました。

入力済のセルの参照方法を変更する(4)

さらにもう一度押すと $B2 になり、もう一度押すと元の B2 になります。このように F4 キーを押すごとに B2 > $B$2 > B$2 > $B2 > B2 のように参照方式が変わっていきます。

必要な個所に直接 $ を入力した方が早い場合もありますけど、このような機能も用意されていることを覚えておかれると便利かもしれません。

-- --

Excel でセルを指定する場合に使用する相対参照と絶対参照について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。