エクセルで自動集計(SUMIF関数の活用)」で作成したSUMIF関数による受注金額の計算式。この計算式には、オートフィルで入力するために2つの工夫、「INDIRECT関数」と「複合参照と絶対参照」を利用しています。「INDIRECT関数の利用」については「セルに入力されている文字を関数で使うには」で紹介しました。今回は、もう一方の「複合参照と絶対参照の利用」について詳しく紹介します。

関数の相対参照

まず、「複合参照」や「絶対参照」を理解するために、「相対参照」について解説します。次のサンプルをご覧下さい。「金額」を表示しているセルD2には「単価×数量」の数式である「=B2*C2」が入力されています。ここで、セルD2の内容をセルD3からセルD6までオートフィルでコピーします。



すると、例えばセルD5には、数式「=B5*C5」が入力されます。そして、「計算式が入力されているセル」から見て「左方向に1つ移動した位置のセル」と「左方向に2つ移動した位置のセル」のデータを使って計算する、といったコピー元の「セルの位置関係」が保たれています。



これが関数の「相対参照」です。つまり、相対参照では、「コピーされた数式で、コピー元の『セルの位置関係』が保たれる」ということです。通常、数式をコピーすると、この相対参照で関数がコピーされます。



関数の絶対参照

続いて「絶対参照」について見ていきましょう。まずは、サンプルをご覧下さい。商品の「単価」の「税込み価格」を算出しています。この数式を、セルC5からセルC8までオートフィルでコピーします。



正しく計算できていませんね。試しにセルC6の内容を見てみましょう。



いかがでしょうか。関数は相対参照でコピーされているため、コピー元であるセルC4でのセルの位置関係が保たれたままコピーされています。そのため、セルC6では、計算式に文字列が紛れ込んでしまっているのでエラーが発生しています。



正しく計算結果を求めるには、計算式を入力するセルの行が変わっても、消費税率のセルB1の位置関係を固定する必要があります。



そこで、固定したいセル番地の「列番号(列位置を表すアルファベット)」と「行番号(行位置を表す数字)」の前に「$」を付けます。サンプルでは「B列」の「1行目」を固定したいので、セル番地「B1」の「B」と「1」の前に「$」を入力して「$B$1」とします。



これで、オートフィルでコピーしても、セルB1の位置関係が固定され、正しい計算結果が得られます。



この「列番号」と「行番号」の前に「$」を付けたセルの参照方法が「絶対参照」です。つまり、絶対参照では、「コピーされた数式で、コピー元の『セルの位置関係』を保たずに固定してしまう」ということです。また、言い換えると、絶対参照は「列位置」と「行位置」の両方を固定する参照方法ともいえます。