数式・関数

【Excel】相対参照と絶対参照

スポンサーリンク
この記事は約9分で読めます。

Excel(エクセル)で作成した表で手早く集計をこなすためにはオートフィルなどを使った数式コピーは欠かせませんが、「相対参照」(そうたいさんしょう)と「絶対参照」(ぜったいさんしょう)が今いちわからない・・・というお悩みを持つ方も少なくないはず。と思い、今回はこの2つの違いをまとめてみました。

※解説画像はMicrosoft365を使用しています

スポンサーリンク

相対参照とは?

セル参照の数式を他のセルにコピーした時、コピー先のセル位置に合わせ、参照するセルの位置も一緒に移動することを相対参照といいます。

ではこちらの表を使って相対参照の動きを見ていきましょう。現在、セルC1に「=A1+B1」という加算の数式が入力されている状態です。この数式を、C2~C4にコピーするという想定です。

A列とB列の値合計をC列に表示する四則演算の表

ここでちょっとした小技を1つ。通常ですと数式を入力したセルには「結果の値」が表示されますので、数式そのものを見たい時はカーソルを合わせて数式バーを確認したり、数式の入ったセルをダブルクリックしたり何かしらの操作が必要になります。

そこで今回は数式の動きをわかりやすくするために「数式で計算した結果」ではなく「数式」そのものをセルに表示させる機能を使って解説します。

[数式]タブのワークシート分析グループにある「数式の表示」をクリックします。(ボタンが押し込まれたようにグレー反転します)

数式の表示ボタンの位置

D列に入っている数式が表示されました。尚、「数式の表示を使用すると、表示中は強制的にセル全体の横幅が広がってしまいますが、表示を解除すると元に戻りますので幅の調整は行わないようにしましょう。

数式の表示がオンの状態

ではこの状態で先ほど数式を入れたセルC1にカーソルを戻し、オートフィルで数式をコピーしましょう。右下隅のフィルハンドルの上(マウスポインターが十字の形に変わる箇所)でマウス左ボタンを押したままセルC4までドラッグします。

フィルハンドルの位置

数式がコピーされました。

C2~C4まで数式がコピーされた状態

一番上のC1に入れた加算の式は同じ行にあるセルA1とB1を参照していましたので、それにならってC2は「A2+B2」、C3は「A3+B3」とそれぞれ同じ行にあるA列とB列のセルを参照する数式になっていますね。このように数式を方向にコピーすると、参照するセル番地の「行番号」が変化します。

では、[数式]タブの「数式の表示」を再度クリックして数式の表示を解除しましょう。セルの横幅が元に戻り、数式の入ったセルも通常通り計算結果の値が表示された状態になります。

数式の表示を解除した状態

次に数式を横にコピーした時の動きも見てみましょう。
こちらの表は、セルA5にSUM関数を入れています。括弧()の引数にはA1~A4までの縦4つのセルの値を合計するように指定してあります。(且つ「数式の表示」をクリックした状態です)

縦合計のSUM関数式

オートフィルでセルB5とC5にも数式をコピーしましょう。セルA5の右下隅のフィルハンドルをクリックしたままC5の位置まで右方向にドラッグします。

フィルハンドルで横方向にドラッグするところ

コピーされた数式を見ると、SUM関数の括弧()内の引数で指定したセル番地(範囲)が変化しましたね。B5は「B1:B4」、C5は「C1:C4」というように、それぞれ数式のある列と同じ列にあるセル範囲を参照しています。このように数式を方向にコピーすると、参照するセル番地の「列記号」が変化します。

セル範囲の列記号が変化した状態

「数式の表示」をクリックして数式の表示を解除します。

数式の表示を解除した状態

これが相対参照の動きになります。単純に表の縦計や横計を出す時など、数式の位置に応じて参照範囲も移動して問題ない時は、相対参照で数式をコピーすれば手早く計算結果を求める事ができます。ちなみに日常的によく使われる「オートSUM」も相対参照で数式が入力されます。

絶対参照とは?

数式をコピーしても参照するセル位置やセル範囲が動かないように固定する事を絶対参照といいます。

こちらの表を使って絶対参照の使い方を見てみましょう。かけ算の九九表みたいなものですが、セルA2に入力した数字にC2~C10の値を乗算(かけ算)した時の結果をD2~D10に求めてみます。

A2の値とC列に縦に並んだ数値をかける表

先に失敗パターンからお見せします。先頭のセルD2に乗算の式「=A2*C2」を入力し、オートフィルでD3~D10に数式をコピーすると・・・

数式の1つめのセルに乗算の式を入れたところ

D3より下の数式の結果がすべて「0」になってしまいました。

式の2段目以降が「0」になってしまったところ

[数式]タブの「数式の表示」をクリックして数式を確認してみましょう。

D3~D10の結果が「0」になってしまったのは、乗算記号の左側に入るA列が相対参照になっていたために、数式コピーした時に行が1つずつ下に移動してしまったのが原因です。D3より下は空白セル(0)にC列の値をかけた事により、答えがすべて「0」になってしまったわけです。

このように数式をコピーした時に参照セルが動いてほしくない場合は「絶対参照」にしてセル番地を固定します。固定をするにはセル番地を構成する列記号と行番号の前に「$」(ドル記号)をつけます。

それでは、先ほどのかけ算の表をもう1度入れ直してみます。

セルD2にカーソルを合わせ、「=」を入力したらセル「A2」をクリックします。(=のあとに直接「A2」と入力しても構いませんが、数式にセル番地を入力する時はそのセルをクリックする方が簡単です)
セルD2に「=A2」と入力され、最後に点滅カーソルが表示されている状態になりました。

=A2まで入力したところ

ここでキーボードのF4キーを押します。すると、数式の「A2」が「$A$2」に変化しましたね。これでA2は位置が固定された事になります。

F4キーを押してドル記号をつけたところ

続けて乗算記号の「*」を入力し、セルC2をクリックします。C2の方は、数式を下にコピーした時に1行ずつ移動させたいので相対参照のままにしておきます。

かけ算の残りの式を入力したところ

Enterで数式を確定したら、セルD2にカーソルを戻してオートフィルでD10まで数式をコピーします。

オートフィルで数式コピーするところ

今度は正しく計算されましたね。

正しく計算されたところ

ここでまた[数式]タブの「数式の表示」をクリックして確認してみましょう。A2は絶対参照となっているため、数式をコピーしても全く動いていません。C列の方は相対参照ですので数式を下にコピーする事で参照位置(行)が1つずつ下に移動しています。

数式を表示して絶対参照にしたA2が動いてない状態を表示

ほんの一例ではありますが、相対参照と絶対参照の違い、イメージはつかめたでしょうか。数式を他のセルにコピーしない場合は絶対参照は意識する必要はありませんが、コピーを行う際は参照するセル番地が動いても大丈夫なのかをよく考え、必要に応じて相対参照と絶対参照を使い分けるようにしましょう。

絶対参照のバリエーション

絶対参照には3つパターンがあり、セル番地を構成する列記号と行番号のどの部分に「$」をつけるかで固定される内容が変わります。

  1.  $A$2 (列記号と行番号の前に「$」がついている)
    列、行の両方の位置が固定されます。数式をどの方向にコピーしても列・行とも動きません。
  1.  A$2 (行番号の前だけに「$」がついている)
    行の位置のみ固定されます。数式を縦方向にコピーしても行は移動しません。横方向にコピーすると列だけ移動します。
  1.  $A2 (列記号の前だけに「$」がついている)
    列の位置のみ固定されます。数式を横方向にコピーしても列は移動しません。縦方向ににコピーすると行だけ移動します。

先ほどの例でセル番地を入力したところでF4キーを1回押しましたが、押すごとに$記号の入る箇所が変化します。

$のついていない「A2」からスタートした場合、F4を1回押すと「$A$2」(上記1のパターン)、2回押すと「A$2」(上記2のパターン)、3回押すと「$A2」(上記3のパターン)になります。4回目を押すと最初の「A2」の状態に戻ります。(5回目以降はまた「$A$2」から始まり、以降同じ順序でループします)

また、「$」記号は数式作成中だけでなく、数式をEnterで確定してしまった後でもつけ直す事ができます。数式の入ったセルにカーソルを合わせF2キーを押すか、セルをダブルクリックすると編集モードになりますので、「絶対参照にしたいセル番地の前後」もしくは「絶対参照にしたいセル番地の列記号と行番号の間」のいずれかに点滅カーソルを移動し、F4キーを必要な回数だけ押しましょう。

逆の発想をすれば、絶対参照にしてしまったけど相対参照で良かった・・・という時も、数式内で修正したいセル番地の前後に点滅カーソルを置いてF4を何回か押せば「$」のないパターンに変更できる、という事であります。

セル番地に「$」をつける際にF4を使わずキーボードのShiftを押しながら数字キーの「4」を押して直接記号を入力しても問題ありませんが、結構めんどくさいので私としてはF4を使う事を推奨します。

ところで先の3パターンのうち、2と3ってどういう時に使うのだろう?という例を最後に1つ。

こちらの表は、A列と1行目に1から3の数字を入れてあります。B2~D4の各セルには、「セルの位置と同じ行にあるA列の数字」と「同じ列にある1行目の数字」を乗算する数式を入れてみます。起点となる数式はセルB2に入力し、他は数式コピーで行うものとします。(画像はわかりやすいようにまた「数式の表示」を行った状態になっています)

セルB2には「=A2*B1」と入力すれば答えが求められますが、このまま他のセルに数式をコピーすると失敗します。

相対参照で乗算式を入れたところ

現在の数式では、数式の入ったセルの左隣とすぐ上にあるセルの値を乗算する相対参照の式になっているため、コピーした時に位置関係もそのまま移動してしまい、乗算する値が入っているA列と1行目からどんどんずれていってしまうからです。

他のセルに数式をコピーした時に参照範囲がずれてしまったところ

このような場合は、表内のどの位置からもA列と1行目を参照するようにしなければならないので、数式中で「A列を参照する側は列位置だけを固定」し、「1行目を参照する側は行位置だけを固定」すれば良い、という考え方になります。

では数式を直していきましょう。セルB2にカーソルを合わせF2を押して編集モードにします。まずA列を参照している「A2」の前後に方向キーで点滅カーソルを移動し、F4を3回押して「$A2」にします。これで数式をどの方向にコピーしてもA列からは動かなくなります。

続けて右方向キーを押して1行目を参照している「B1」の前後に点滅カーソルを移動し、F4を2回押して「B$1」にします。これで数式をどの方向にコピーしても1行目からは動かなくなります。

あとはオートフィルで数式をコピーするだけです。縦にコピーしたら、3列選択されている状態のまま一番下のフィルハンドルを右にドラッグしましょう。(コピー順は横⇒縦と逆でも構いません)

これで表は完成です。「数式の表示」をクリックして数式の表示を解除し結果を確認しましょう。

文中で何回か登場した「数式の表示」、これはあまり使ってる人を見ないのですけれど、セル参照の動きを一度に確認できるのでむしろ初心者の方こそ積極的に使っていただきたい機能です。また、他の人から譲り受けた表で「これはどこに何の数式が入っているんだ?」という時に確認する手段としても使えますので、是非覚えておいて活用してください。

スポンサーリンク