リテラアップダウンロード

ExcelのINDIRECT関数の使い方|別シートの参照方法など

ExcelのINDIRECT関数

Excel(エクセル)でよく使われるINDIRECT関数の使い方を紹介します。

INDIRECT関数はセルや他のシートを参照できるため、VLOOKUP関数やMATCH関数、ADDRESS関数やSUM関数など様々な関数と組み合わせて使用すると効果的です。

ここでは別シートの参照方法といったINDIRECT関数単体の使い方から、他の関数と組み合わせた実践的な方法まで幅広く解説していきます。

ExcelのINDIRECT関数とは

Excel(エクセル)のINDIRECT関数とは、指定される文字列への参照を返す関数です。

例えば他のセルに記載されているデータがある場合、INDIRECT関数でセル番地を指定すればそのセル番地にある文字列と同じ文字列を表示させることが可能です。

参照したいデータがB2にある場合「=INDIRECT(”B2”)」と入力すると、関数を入力したセルにB2の値と同じ値が表示されます。

ExcelのINDIRECT関数とは

INDIRECT関数の書式

Excel(エクセル)のINDIRECT関数の書式は「=INDIRECT(参照文字列,[参照形式])」となり、引数は2つです。引数の具体的な指定方法を見ていきましょう。

  • 第1引数:参照文字列
  • 第2引数:参照形式

第1引数:参照文字列

第1引数は必須で、参照文字列を記載します。セル参照を表す文字列またはセル参照を指定します。

直接セル参照を表す場合など、文字列として指定する場合は「”」(ダブルクオテーション)で囲むのを忘れないようにしましょう。

第2引数:参照形式

第2引数は参照形式で、省略することができます。参照文字列で指定されたセル参照の種類を、論理値で指定します。

指定の仕方は次のようになります。

  • TRUE、または省略した場合は「A1形式」のセル参照
  • FALSEを指定した場合は「R1C1形式」のセル参照

「R1C1形式」はマクロ(VBA)を使う際によく用いられる形式ですので、通常は「A1形」としておけばOKです。

INDIRECT関数の使い方【活用例】

Excel(エクセル)のINDIRECT関数を使った活用方法として、先ほどよりも汎用性の高い使い方を紹介します。

引数に直接参照したいセル番地を入力するのではなく、参照したいセル番地が記載されているセルをセル参照します。

STEP.1
取り出したい文字列のあるデータを用意し、セル番地と関数を入力するための欄を作成しましょう。

ExcelのINDIRECT関数の使い方

STEP.2
セルC11に関数を入力します。例のように「=INDIRECT(B11)」と入力してみましょう。引数は「B11」と指定しているため、B11セルに記載されているセル番地の情報を参照します。この時「”」(ダブルクオテーション)は不要です。

ExcelのINDIRECT関数の使い方

STEP.3
セルB11に、情報を取り出したいセルの番地を入力します。例ではB5セルにある情報を表示させたいので「B5」と入力しました。

ExcelのINDIRECT関数の使い方

STEP.4
これでC11セルに参照元のB5セルと同じ「ノート」という文字列が表示されました。

ExcelのINDIRECT関数の使い方

B11セルの中身を書き換えるだけでC11の値も自動で変更されるため、より効率的に情報を更新することが可能です。

INDIRECT関数で別シートを参照する方法

Excel(エクセル)のINDIRECT関数を使えば、別シートにある値を参照することもできます。

ここでは、ある小学校における学年別の生徒数2019年から2022年までの情報をINDIRECT関数で参照し、1つのシートにまとめます。

STEP.1
関数を入力するシートを作成しましょう。例では「まとめ」シートとしています。

ExcelのINDIRECT関数で別シートを参照

STEP.2
それぞれの年の全校生徒数を参照します。参照元となるセルのアドレスを確認しましょう。

ExcelのINDIRECT関数で別シートを参照

STEP.3
2019年の欄に「=INDIRECT(“‘2019年’!C9”)」と入力しましょう。「’シート名’!」と「セル番地」をつなげれば「’2019年’!C9」となり別のシートにあるセル番地を指定することができます。

ExcelのINDIRECT関数で別シートを参照

STEP.4
これで別シートのデータを参照することができました。

ExcelのINDIRECT関数で別シートを参照

STEP.5
残りのセルも同様にシート名を適宜変更して入力すればOKです。以上で操作は完了です。

ExcelのINDIRECT関数で別シートを参照

先ほどと同様に、引数にセル参照を利用することも可能です。近くのセルに「’2019年’!C9」と入力して、INDIRECT関数でその入力したセルを参照すればOKです。

INDIRECT関数で別シート参照時にエラーがでる原因

別シートの値をINDIRECT関数を使って参照した時に、「#REF!」というエラーがでることがあります。原因として考えられるのは、別シートのセルを正しく指定できていないことです。

特に、シート名に特殊な文字が含まれているとエラーが起こりやすくなります。回避方法としてはシート名を「’」(シングルクォーテーション)で囲む方法があります。

先ほど紹介した「’2019年’!C9」のように「’シート名’」「!」「セル番地」をつなげればOKです。

INDIRECT関数で別シート参照時にエラー

また効率的に別シートのセルを参照するために、シート名をセルに入力して「&」を用いてアドレスを指定することがあります。この時に結合方法を間違えたり「”」が不足していたりすることで正しいアドレスになっていないこともよくあります。

エラーがなかなか解消しない場合は、引数に直接アドレスを指定するなどして指定アドレスが間違っていないか確認してみましょう。

INDIRECT関数と他の関数の組み合わせ方

Excel(エクセル)のINDIRECT関数は他のセルの文字列を参照できるため、他の関数と組み合わせて使用するとユニークなシステムを作成することができます。それぞれの組み合わせ方を具体的に紹介していきます。

  • INDIRECT関数とVLOOKUP関数の組み合わせ
  • INDIRECT関数とMATCH関数の組み合わせ
  • INDIRECT関数とADDRESS関数の組み合わせ
  • INDIRECT関数とSUM関数の組み合わせ

INDIRECT関数とVLOOKUP関数の組み合わせ

INDIRECT関数は、他の関数と組み合わせるとより効果的な仕組みをつくることができます。まずはINDIRECT関数とVLOOKUP関数の組み合わせ方を紹介します。

STEP.1
画像のように、カテゴリー別にまとめられた表と、データを表示させるための欄を作成しましょう。

INDIRECT関数とVLOOKUP関数の組み合わせ

STEP.2
それぞれのカテゴリーの範囲に名前をつけます。例のように、あるカテゴリーの全てのデータを選択して名前を付けましょう。画面左上のセル番地が表示されている名前ボックスに直接打ち込みます。

INDIRECT関数とVLOOKUP関数の組み合わせ

STEP.3
取り出したデータを表示させる欄に「=VLOOKUP(C22,INDIRECT(B22),2,FALSE)」と入力しましょう。第1引数には検索したい値を、第2引数にはデータの範囲を、第3引数には取り出したい値がある列の番号を、第4引数には検索方法を指定しています。

データの範囲として、先ほど名前の定義で作成した範囲を参照させるためにINDIRECT関数を用いています。

INDIRECT関数とVLOOKUP関数の組み合わせ

STEP.4
これで「カテゴリー」と「商品名」を入力すると該当する「価格」を取得することができました。

INDIRECT関数とVLOOKUP関数の組み合わせ

異なるシートごとにまとめられた範囲でも同様にINDIRECT関数で参照することが可能です。

INDIRECT関数とMATCH関数の組み合わせ

次は、指定した項目を検索してその位置を返すMATCH関数との組み合わせ方を説明します。

STEP.1
画像のような表と、取り出したデータを表示させるための欄を作成しましょう。例では商品名を入力すると、対応する価格を表示させるようにします。

INDIRECT関数とMATCH関数の組み合わせ

STEP.2
取り出したデータを表示させる欄に「=INDIRECT(“B”&MATCH(D2,A2:A4,0)+1)」と入力しましょう。INDIRECT関数の引数には、調べたい商品の価格が記載されているセル番地を指定します。価格のデータがあるB列の「B」と「調べたい商品の行番号をMATCH関数で取得した値」を「&」で結合して指定しています。

MATCH関数の第1引数には検索したい値を、第2引数にはデータの範囲を指定して範囲内での位置を取得します。行番号に変換するために+1するのを忘れないようにしましょう。

INDIRECT関数とMATCH関数の組み合わせ

STEP.3
これで検索したい商品名を入力すれば、該当する価格が表示されるようになりました。

INDIRECT関数とMATCH関数の組み合わせ

INDIRECT関数とADDRESS関数の組み合わせ

次は、指定された行番号と列番号からセル番地を文字列として作成するADDRESS関数とINDIRECT関数を組み合わせてデータを抽出する方法を紹介します。

STEP.1
画像のような表と、抽出したいデータを表示させる欄を作成しましょう。例では、表中のD6セル(6行4列目)にあるデータを取得します。

INDIRECT関数とADDRESS関数の組み合わせ

STEP.2
データを表示させたい欄に、「=INDIRECT(ADDRESS(B11,C11))」と入力しましょう。ADDRESS関数の引数には、行番号と列番号を指定します。ADDRESS関数で絶対参照のセル番地に変換されるので、これをINDIRECT関数の引数に指定すれば該当するセルの文字列を取り出すことができます。

INDIRECT関数とADDRESS関数の組み合わせ

STEP.3
検索したいデータが存在するセルの行番号と列番号を入力してみましょう。これで該当するデータを抽出することができました。

INDIRECT関数とADDRESS関数の組み合わせ

表中のデータを、数字のみの取り扱いで検索することができるため、マクロなどのプログラムとの相性がよい方法となります。

INDIRECT関数とSUM関数の組み合わせ

最後に、範囲内にある数字の合計を求めるSUM関数と組み合わせて、カテゴリー別の集計を効率よく行う方法を紹介します。

STEP.1
画像のような表と、集計したデータを表示させる欄を作成しましょう。例では、5つのカテゴリーそれぞれについて、6ヶ月分の支出の合計をまとめます。

INDIRECT関数とSUM関数の組み合わせ

STEP.2
それぞれのカテゴリーのデータ範囲に名前をつけて定義します。データ範囲を選択して、画面左上にある名前ボックスに各カテゴリー名を入力しましょう。

INDIRECT関数とSUM関数の組み合わせ

STEP.3
集計をまとめるための欄に、「=SUM(INDIRECT(A2))」と入力しましょう。INDIRECT関数で先ほど定義したデータ範囲を参照します。

INDIRECT関数とSUM関数の組み合わせ

STEP.4
オートフィルで残りのカテゴリーも同様に集計しましょう。これで名前をつけて定義した範囲をそれぞれ足し合わせることができました。

INDIRECT関数とSUM関数の組み合わせ

各カテゴリーがそれぞれ別のシートにまとまっている場合や、すでにデータ範囲に名前が定義されている場合、この方法を使えばブック内に散らばったデータを効率よく集計することができます。

INDIRECT関数の使い方をおさらい

Excel(エクセル)のINDIRECT関数について、書式や単体での基本的な使い方から他の関数と組み合わせた応用的なテクニックを紹介しました。

今回併せて紹介した「VLOOKUP関数」「MATCH関数」「ADDRESS関数」「SUM関数」は、INDIRECT関数と組み合わせるとユニークな使い方ができます。ぜひこの記事を参考に、具体的な組み合わせ方を覚えておきましょう。

リテラアップアプリのご利用について、法人の方は下記フォームよりお問い合わせください。

(Excel,WordなどOffice製品やPC関連の技術的な質問にはお答えできかねます。ご了承ご了承ください。)