Excelの式でINDIRECT関数を使用して、式で使用されるセル参照の範囲を変更し、式自体を編集することなく変更します。これにより、スプレッドシートが変更された場合でも、同じセルが使用されます。
注意:この記事の手順は、Excel 2019、Excel 2016、Excel 2013、Excel 2010、Excel for Mac、およびExcel Onlineに適用されます。
COUNTIF - INDIRECT式でダイナミックレンジを使用する
INDIRECT関数は、SUMやCOUNTIF関数など、セル参照を引数として受け入れる多くの関数で使用できます。
INDIRECTをCOUNTIFの引数として使用すると、セルの値が基準を満たしている場合に関数でカウントできるダイナミックレンジのセル参照が作成されます。これは、テキストデータ(テキスト文字列とも呼ばれます)をセル参照に変換することで行います。

この例は、上記の画像に示されているデータに基づいています。このチュートリアルで作成されたCOUNTIF - INDIRECT式は次のとおりです。
= COUNTIF(間接(E1& ":"&E2)、 "> 10")
この式では、INDIRECT関数の引数には次のものが含まれます。
- テキストデータD1およびD6を含むセル参照E1およびE2。
- 範囲演算子であるコロン(:)は二重引用符で囲まれています(' 'コロンをテキスト文字列に変換します。
- コロンをセル参照E1およびE2と連結または結合するための2つのアンパサンド(&)。
その結果、INDIRECTはテキスト文字列D1:D6をセル参照に変換し、参照セルが10より大きい場合はCOUNTIF関数に渡してカウントします。
INDIRECT関数は、任意のテキスト入力を受け入れます。これらは、関数に直接入力されるテキストまたはテキストセル参照を含むワークシート内のセルにすることができます。
数式の範囲を動的に変更する
ダイナミックレンジを持つ数式を作成することが目標です。動的範囲は、式自体を編集することなく変更できます。
セルE1とE2にあるテキストデータをD1とD6からD3とD7に変更することで、その関数で合計された範囲をD1:D6からD3:D7に簡単に変更できます。これにより、セルG1の数式を直接編集する必要がなくなります。
この例のCOUNTIF関数は、数値が10より大きい場合にのみ数値を含むセルをカウントします.D1:D6の範囲にある5つのセルのうち4つにデータが含まれていても、3つのセルに数値が含まれています。空白またはテキストデータを含むセルは、関数によって無視されます。
COUNTIFでテキストを数える
COUNTIF関数は、数値データのカウントに限定されません。また、特定のテキストと一致するかどうかをチェックして、テキストを含むセルをカウントします。
これを行うには、次の数式がセルG2に入力されます。
= COUNTIF(間接(E1& ":"&E2)、 "2")
この式では、間接関数はセルB1〜B6を参照します。 COUNTIF関数は、テキスト値を持つセルの数を合計します 二 それらの中に。
この場合、結果は1です。
COUNTA、COUNTBLANK、および間接
他の2つのExcelカウント関数は、空白または空のセルのみを無視して任意の種類のデータを含むセルをカウントするCOUNTAと、範囲内の空白または空のセルのみを数えるCOUNTBLANKです。
これらの関数はどちらもCOUNTIF関数と同様の構文を持っているため、上記の例にINDIRECTを代入して以下の式を作成することができます。
= COUNTA(間接(E1& ":"&E2))= COUNTBLANK(間接(E1& ":"&E2)
範囲D1:D6の場合、5つのセルのうち4つにデータが含まれているため、COUNTAは4の答えを返します。 COUNTBLANKは、範囲内に空白セルが1つしかないので、1の答えを返します。 これらの式のすべてでINDIRECT関数を使用する利点は、範囲内のどこにでも新しいセルを挿入できることです。 この範囲は、様々な機能の中で動的にシフトし、それに応じて結果が更新されます。 間接関数がなければ、新しい関数を含む7つのセルすべてを含むようにすべての関数を編集する必要があります。 INDIRECT関数の利点は、テキスト値をセル参照として挿入できることと、スプレッドシートが変更されるたびに動的に範囲を更新することです。 これにより、スプレッドシート全体のメンテナンスが大幅に簡単になります。 INDIRECT関数を使用する理由





