エクセルで関数の使い方を調べる際、まれに「絶対参照」という言葉を見る機会があります。参照には他にも「相対参照」「複合参照」といった、いくつかの「参照」が存在するため、それぞれの参照が示す意味を知らなければ、関数を使って上手く表現できません。
この記事では、エクセルにおける「絶対参照」「相対参照」「複合参照」の特徴を解説します。それぞれできることや、注意点を画像付きで解説するので、ぜひ参考にしてください。
目次
そもそもエクセル(Excel)の参照とは
そもそも、エクセルにおける参照とは何なのでしょうか?一般的な「参照」という言葉の意味は、「他のものと照らし合わせること」です。エクセルにおける参照とは、「特定のセル番地を指定する」ことを指します。
エクセルでは、セルと1つ1つの入れ物に文字列や記号、数字といった情報を格納できる性質を活かして、セル番地を指定すると、そのセルに格納された情報を取得できます。
例えばA4セルに「じゃがいも」という文字列が入力されていた場合、「=A4」と任意のセルに入力することで、選んだセルに「じゃがいも」と表示することが可能です。セルに数字が入っていた場合は、計算式の構成要素にもできます。よく使われるのは、SUM関数の引数にセル番地の範囲を指定して合計値を求める作業です。
参照には「相対参照」「絶対参照」「複合参照」の3種類があるので、それぞれ順に見ていきましょう。
相対参照
相対参照は、特に固定はせず、セルの位置をずらして参照する方法です。例えば、下記のような「もも肉」「にんじん」「じゃがいも」の単価と個数が記載された価格表があったとします。
まず商品ごとの小計を求めたいのですが、あなたならどうやって求めますか?多くの方は、「=C3*D3」という数式を記載して、もも肉の単価と個数をかけ合わせて小計を算出し、D5セルまで「オートフィル」を使う方法を採用するでしょう。
実はオートフィルでE3セルの計算結果をE4、E5セルに反映させる時、「相対参照」が機能して、1行ずつ計算元のセルをずらしています。最初はもも肉の単価と個数を掛け算しましたが、次の行では、にんじんの単価と個数を掛け算する処理に変わるのです。参照する値がずれていることがわかります。
絶対参照
相対参照が参照するセルをずらしていく参照方法であるのに対し、絶対参照は「セルの番地を固定して処理を行う」参照の方法です。相対参照は特にセル番地に対して装飾は不要でした。しかし、絶対参照は列や行番号の前に半角のドルマーク($)を付与しなければなりません。
例えば、「B4セル」に対して、絶対参照を付与するには下記のような操作を行います。行と列のうち、固定したい方の前にドルマーク($)を付与します。列だけ動かしたくない場合は、「$B4」、行を固定する場合は「B$4」、どちらも固定したい場合は、行と列それぞれの前にドルマークを付与しましょう。
B4セル | 相対参照。行と列がズレる |
$B4セル | B列からは動かさず、行数だけをズラす |
B$4セル | 4行目からは動かさず、列だけをズラす |
$B$4セル | 列も行も動かさない。B4セルだけを参照する |
絶対参照は、参照先のセルを絶対に動かしたくない場合に使うため、ロジックを考える必要があります。むやみに絶対参照を使うと想定通りの結果が得られません。全体に占める割合を計算する際などに、絶帝参照はよく使われます。
例えば、各商品の小計が、売上の合計の何%を占めるのかを計算するような場合です。もも肉の紹介が、合計金額の何割を占めるか求める場合、「小計÷総合計×100」という計算をするので、エクセルに入力する際は、「=E3/E6*100」という数式になります。
この時点では何の問題もありません。ただし、この相対参照の数式を入れた状態でオートフィルをかけてしまうと下記のようなエラーが発生します。
なぜDIVエラーが発生したのかというと、参照先の「総合計」のセルがにんじん、じゃがいもの割合を計算する際にズレてしまっているからです。試しに、エラーが発生したF4セルの数式を確認してみると、E4を何も記入されていないE7セルで割ろうとしていることがわかります。そこで、参照先を総合計の入ったE6セルに固定する絶対参照を活用するのです。
もも肉の合計に占める割合を算出する数式を「=E3/E6*100」から「=E3/$E$6*100」に変えてみましょう。これでオートフィルをかけてみると、その下に続く「にんじん」「じゃがいも」のセルには、正しい計算結果が表示されました。
複合参照
相対参照と絶対参照は名前を聞く機会が多く、イメージが付きやすいのですが、「複合参照」という名前を聞いたことがある方は少ないのではないでしょうか?
複合参照とは、これまで解説した「相対参照」と「絶対参照」を組み合わせた参照方法です。しかし、名前は聞いたことがない方でも、無意識で複合参照を使ったことがあるケースは多く存在します。ここでは「九九の表」を使って「相対参照」を解説しています。非常に複雑な仕組みになっているので、エクセルの画像と照らし合わせながら見てみましょう。
まずは、九九の表を作ってみましょう。見出しとなる行と列を1行目、1列目に記載します。B1とA2セルの中身を指定して掛け算をすると、1×1となり、当然のように1と表示されます。しかし、縦と横のどちらでも良いので、オートフィルをかけてみましょう。ここでは横方向にオートフィルをかけますが、想定外の数値が出力されています。数式は相対参照なので、参照先がズレてしまうことが原因です。そこで、セルを固定するために「絶対参照」にしてみましょう。
横方向にオートフィルをかけたときにセルが正しく表示されるように数式を作っていきます。参照先の列をAに固定したいので、列の前にドルマークを付与して「=B1*$A2」という数式を入力しましょう。正しい計算結果が表示されます。今度は、B2セルからJ2セルまでを範囲選択して縦方向にオートフィルをかけると、どうなるでしょうか?残念ながら、3の段から計算結果がおかしくなっています。8の段や9の段に関しては、桁数が大きすぎて「#」が表示されるなど、まだズレが生じているようです。
今度は参照先の行を動かさず、列だけを動かすような数式を作らなければなりません。数式は下記のようになります。
「=B$1*$A2」
これでオートフィルをかけてみると、横方向も縦方向も、期待した通りの数値になり、九九表が完成しました。このように、相対参照と絶対参照を組み合わせてセルに入力された値を参照する方法を「複合参照」といいます。
絶対参照を楽にするショートカット
セル番地を絶対参照にする際は、半角のドルマークを付けなければなりません。しかし、関数を入力したセルに後から絶対参照を付けようとするとセルの中身がドルマークに置き換わってしまうなど、なかなか面倒な手順を踏まなければなりません。ここでは、絶対参照を楽に指定できるショートカットを紹介します。
F4キーを押す
数式の途中でセル番地を指す場所にカーソルを当て、F4キーを押すと$マークを付与できます。押す回数によって、固定する場所が変わるので、下記の表を参考にしてください。
状態 | セル番地 | 特徴 |
何も押していない状態 | =B4 | 相対参照。行と列がズレる |
F4キーを1回押下 | =$B$4 | 列も行も動かさない。B4セルだけを参照する |
F4キーを2回押下 | =B$4 | 4行目からは動かさず、列だけをズラす |
F4キーを3回押下 | =$B4 | B列からは動かさず、行数だけをズラす |
F4キーを4回押下 | =B4 | 相対参照。行と列がズレる |
以降繰り返し | ー | ー |
F4キーが反応しない場合
F4キーを押しても反応しない場合、ファンクションキーが正常に動いていない可能性があります。特に、Windows10と11は、フィルタキーが有効化されてF4キーが使えていない可能性があります。そのような場合は、以下の手順でフィルターキーを無効にしましょう。
※Windows10の場合
「Windowsマーク」を右クリック→歯車マークの「設定」を開く
(その後は「簡単操作」→「キーボード」の順に押下)
※Windows11の場合
「アクセシビリティ」→「キーボード」の順に押下→「フィルタキー機能の使用」のスイッチを「オフ」に変更
数式バーが狭く絶対参照が成功したのか見えない場合
引数の多い関数で、絶対参照を上手く指定できたのか確認しづらい場合は、数式バーの幅を広げましょう。幅を広げると一気に数式が見やすくなります。列の見出し(AやBのようなアルファベット)の境界線をクリックしてドラッグするか、右クリックで列の幅を変更することで、幅のサイズ調整が可能です。
エクセルで別のシートのセルを参照する方法
エクセルはブック(Book)というファイルの中に、いくつものシート(Sheet)を作れます。基本的にセルの参照は同一シート内で行うものですが、別のシートのセル番地を参照することも可能です。ここでは、エクセルで別のシートのセルを参照する方法を解説します。
別のシートを参照する方法
同じシート内のセルを参照する場合は、そのままセル番地を指定するだけです。別シートのセルを参照する時は、少し書き方が変わります。
別シートを参照する際は、参照先のシート名とセル番地の入力が必要です。
「=別シート名!セル番地」といった数式で参照します。別シートとセル番地の間は、半角のエクスクラメーションマーク(!)で繋ぐというルールがあり、単純なスペルミスや全角・半角のミスで誤ったシート名を書くと参照に失敗するため、参照したいシート名をダブルクリックして、Ctrlキー+Cでコピーしましょう。
INDIRECT関数で別シートを参照できる
参照したいシート、セルの番地を直接指定する方法の他に、INDIRECT(インダイレクト)関数を使って別シートのセルを参照する方法があります。
INDIRECT関数の使い方
INDIRECT関数は以下の数式で表せます。
=(参照文字列,参照形式)
参照文字列は、セル番地を指定したり、「”〇〇”」といったダブルクォーテーションマークで囲んだ文字列で表現します。第2引数の「参照形式」は、省略してもかまいません。
この参照形式には、「A1形式」と「R1C1形式」の2つがあります。「A1形式」は普段見慣れているような、「A1セル」といった通常の番地を返す形式です。一方、「R1C1形式」は、同じA1セルを指していても「R1C1」と表現します。普段見慣れない、なかなか複雑な構造をしているのが特徴です。
参照形式を省略すると、自動的に「A1形式」が指定されるので、基本的には省略して使いましょう。
同じシートのセルを参照するのであれば、「=INDIRECT(“セル番地”)」別シートのセルを参照する場合は、「=INDIRECT(“シート名!セル番地”)」と記載します。
一方、セルの中身が数値の場合は、ダブルクォーテーションは不要です。A2セルを参照する場合は、「=INDIRECT(A2)」、「=INDIRECT(シート名!”A2”)」という風に表現します。
まとめ
エクセルにおける参照には、相対参照、絶対参照、複合参照の3種類があります。参照するセル番地をずらしていく場合は「相対参照」、動かさずに固定したい場合は「絶対参照」、必要に応じて動かしたい場合は「複合参照」がおすすめです。
絶対参照にする場合は、セル番地に半角のドルマーク($)を付与します。行と列のうち固定したい方の前に付けましょう。F4キーを押すことで、絶対関数のショートカットができます。