Excelで数式を作成して下の行へコピーする「フィル」は便利な機能ですが、INDIRECT関数を使った数式では通常のコピーと同じように参照先が変化しないため、戸惑うことがあります。この記事では、=SUM(INDIRECT(“K1:P1”))のような数式を下方向へ1行ずつずらして入力する方法や、INDIRECT関数で参照を自動調整する考え方について解説します。
INDIRECT関数を使うとフィルで参照がずれない理由
通常のExcelの数式では、セル参照はコピーすると自動的に変化します。例えば、A1を参照する数式を下へコピーするとA2、A3のように変わります。
しかし、INDIRECT関数ではセル番地を文字列として指定しています。
例えば「=SUM(INDIRECT(“K1:P1”))」の場合、ExcelはK1:P1という文字をそのまま住所として読み取るため、下へコピーしてもK2:P2には変化しません。
そのため、INDIRECT関数内の文字列を行番号に合わせて変化させる必要があります。
INDIRECT関数で下方向へずらす基本的な数式
フィルで1行ずつ参照先を変更したい場合は、ROW関数を組み合わせます。
例えば、1行目から開始して下へコピーする場合は、以下のような数式にします。
=SUM(INDIRECT(“K”&ROW()&”:P”&ROW()))
この数式では、ROW関数が現在の行番号を取得します。
1行目なら「K1:P1」、2行目なら「K2:P2」、3行目なら「K3:P3」というように自動的に変化します。
開始位置が違う場合の数式調整方法
例えば、数式を5行目から入力したい場合、ROW関数だけでは5行目から始まるため問題ありません。
しかし、数式を別の位置に入力して、参照する行を一定の位置から開始したい場合はROW関数に調整を加えます。
例えば、入力位置に関係なく1行目から参照したい場合は以下のようにします。
=SUM(INDIRECT(“K”&(ROW()-4)&”:P”&(ROW()-4)))
このように、ROW関数から数字を引くことで参照する行番号を調整できます。
INDIRECTを使わずに同じ結果を出す方法
今回のような横方向の範囲を合計するだけであれば、実はINDIRECT関数を使わない方法のほうが簡単です。
例えば、最初のセルに以下の数式を入力します。
=SUM(K1:P1)
この数式を下方向へフィルすると、自動的に以下のように変化します。
- 1行目:=SUM(K1:P1)
- 2行目:=SUM(K2:P2)
- 3行目:=SUM(K3:P3)
セル範囲を通常参照できる場合は、INDIRECTを使わないほうが処理速度も速く、管理もしやすくなります。
INDIRECT関数を使うべき場面
INDIRECT関数は、セル参照を文字列から作成したい場合に便利な関数です。
例えば、入力した文字によって参照する範囲を変えたい場合や、別シートの名前を指定して参照したい場合などに活用できます。
一方で、単純にコピーして参照範囲をずらしたいだけの場合は、通常のセル参照やINDEX関数などのほうが適している場合があります。
Excel初心者の場合は、まず通常のセル参照でフィルの動きを理解し、必要な場面だけINDIRECT関数を使うと覚えやすくなります。
iPhone版Excelで数式をフィルする時のポイント
iPhone版Excelでも数式のコピーやフィルは可能ですが、パソコン版と比べて操作場所が分かりにくい場合があります。
数式を入力したセルを選択し、セル右下のフィルハンドルをドラッグすることで下方向へコピーできます。
ただし、INDIRECT関数のように文字列で参照を指定している数式は、自動的に変化しないため、ROW関数などを組み合わせた数式を利用する必要があります。
まとめ:INDIRECT関数はROW関数と組み合わせるとフィルできる
「=SUM(INDIRECT(“K1:P1”))」をそのままコピーしても、INDIRECT内の文字列は変化しないため、参照範囲は移動しません。
下方向へ1行ずつずらしたい場合は、「=SUM(INDIRECT(“K”&ROW()&”:P”&ROW()))」のようにROW関数を組み合わせることで自動調整できます。
ただし、単純な合計計算なら「=SUM(K1:P1)」のような通常の参照のほうが簡単で、Excelでは一般的な方法です。用途に合わせてINDIRECT関数を使い分けることが重要です。

コメント