セルの相対参照と絶対参照
図1 のように A1:C3 の範囲に 2 桁の数値が入力されているものとします (十の位が行番号,一の位が列番号に対応しています).
数値はセンタリングしていますが,後で説明を書き込むためで他意はありません.
- 相対参照
- 図1 の状態から
B5をアクティブセルにして,数式=A2を入力してみましょう※1. すると,図2 のように数式入力ボックスには=A2が,B5セルには実行結果としてA2セルと同じ値 (21) が表示されます.
図2・相対参照 (1) - このとき
B5のセルはA2セルの値を参照しているのですが,アクティブセル (B5) から見て,1 つ左の列の 3 つ上のセル (A2) を参照していると考えると相対参照の本質を理解できます. つまり,図3 の赤い矢印の先を参照していると考えます.
図3・相対参照 (2) B5セルをコピーして,C4セルに貼り付けてみましょう. すると,図4 のように数式入力ボックスには=B1が,C4セルには実行結果としてB1セルと同じ値 (12) が表示されます. アクティブセルの枠に合わせて赤い矢印がそのまま平行移動し,1 つ左の列の 3 つ上のセル (B1) を参照していることがわかります.
図4・相対参照 (3) B5セル (またはC4セル) をコピーして,D3セルに貼り付けてみましょう. すると,図5 のように数式入力ボックスには=C#REF!が,D3セルには実行結果として#REF!が表示されます. 赤い矢印が示すように,1 つ左の列 (C 列) は存在しますが,3 つ上のセルは表の外側にハミ出してしまうので,参照先のセルが見つからずエラーとなってしまうのです.
図5・相対参照 (4) - 相対参照では,アクティブセルと参照先のセルとの位置関係が維持されたままでコピーされる (赤い矢印は伸び縮みせずに平行移動する) ことが理解できたでしょうか.
- このとき
- 絶対参照
- 図1 の状態から
B5をアクティブセルにして,数式=$A$2を入力してみましょう. すると,図6 のように数式入力ボックスには=$A$2が,B5セルには実行結果としてA2セルと同じ値 (21) が表示されます. このとき,図6 の緑の矢印の先を参照しているのですが,相対参照と異なり絶対参照では矢印の先がA2セルにピン止めされていると考えると絶対参照の本質を理解できます.
図6・絶対参照 (1) B5セルをコピーして,C4セルに貼り付けてみましょう. すると,図7 のように数式入力ボックスには=$A$2が,C4セルには実行結果としてA2セルと同じ値 (21) が表示されます. 緑の矢印が伸び縮みして,ピン止めされた矢印の先のセル (A2) を参照していることがわかります. ほかのセルに貼り付けても,全く同じ結果が得られます.
図7・絶対参照 (2) - 絶対参照では,参照先のセルが常に固定されたままでコピーされる (緑の矢印の先がピン止めされている) ことが理解できたでしょうか.
- 列の絶対参照
- 図1 の状態から
B5をアクティブセルにして,数式=$A2を入力してみましょう. すると,図8 のように数式入力ボックスには=$A2が,B5セルには実行結果としてA2セルと同じ値 (21) が表示されます. このとき,図8 の青い矢印の先を参照しているのですが,この矢印の先は水色の点線が示すレール上しか移動できないようになっていて,アクティブセルの 3 つ上を参照するように移動すると考えると列の絶対参照の本質を理解できます.
図8・列の絶対参照 (1) B5セルをコピーして,C4セルに貼り付けてみましょう. すると,図9 のように数式入力ボックスには=$A1が,C4セルには実行結果としてA1セルと同じ値 (11) が表示されます. 青い矢印の先端が水色の点線のレール上を移動し,アクティブセルより 3 つ上のセル (A1) を参照していることがわかります.
図9・列の絶対参照 (2) - 列の絶対参照では,指定された列に含まれる,アクティブセルとの上下関係が保たれたセルが参照される (青い矢印は水色の点線のレール上を移動し,アクティブセルとの上下関係を保つ) ことが理解できたでしょうか.
- 行の絶対参照
- 列の絶対参照と「行」と「列」の役割を交換したのが,行の絶対参照です.
- 図は示しませんが,図1 の状態から
B5をアクティブセルにして,数式=A$2を入力してみましょう. すると,数式入力ボックスには=A$2が,B5セルには実行結果としてA2セルと同じ値 (21) が表示されます.B5セルをコピーして,C4セルに貼り付けてみましょう. すると,数式入力ボックスには=B$2が,C4セルには実行結果としてB2セルと同じ値 (22) が表示されます. どうしてこのようになるか,理由はご自分で考えてみてください. - 図は示しませんが,図1 の状態から
別シートの参照
同じファイル (ドキュメント) に含まれる別のワークシートのセルを参照することも可能です.
シート名 Sheet1 の A2 セルを参照したければ次のように数式を入力します※2.
=Sheet1.A2
絶対参照,列の絶対参照,行の絶対参照も,そのまま使えます. 関数の引数にも利用可能です. したがって,シートには内容が伝わりやすく,入力しやすい名前を付けるようにしましょう (半角英数字だけを使うことを推奨します).
シート名を変更したい場合は,シート名を右クリックして表示されるメニューから シート名の変更 を選択します. 同一ファイル内であれば,シート名の変更がセル参照の数式にも反映されるようですが,トラブルを避けるためにもシート名は早めに設定しておくほうがよいでしょう.
別ファイルの参照 (非推奨)
別のファイル (ドキュメント) に含まれるワークシートのセルを参照することも可能です.
U: ドライブの temp フォルダに保存された file01.ods というファイル中のシート名 Sheet1 の A2 セルを参照したければ次のように数式を入力します※3.
='file:////U:/temp/file01.ods'#Sheet1.A2
別ファイルへの参照は,記憶装置の容量が乏しかった頃には有益でした. しかし,現代においては参照先のファイルの絶対パスを指定しなければならない (ファイルを改名/移動/削除すると参照できなくなる) ことに対するデメリットが大きいように感じられます.
その代わりとして,参照したいシートを同じファイルにコピーすることを推奨します. シートのコピーは,シート名を右クリックして表示されるメニューからシートを移動またはコピーをクリックして開かれるダイアログボックスで実行することができます. 同じシートにコピーした後は別シートの参照を利用します. シート内のデータをひんぱんに更新する必要があり,それを別シートから参照するといった用途には不向きですが,データを多重化して参照先を同一ファイル内に限るようにすることで,保守性や再利用性を損なわずにファイル交換ができるようになります.