本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[XL]他セルの文字列を間接的に使ってセルを参照する(INDIRECT関数)

文書番号: 402244

最終更新日: 1997/10/23


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP402244

概要

本文書は、Excel 5.0 のワークシート関数「 INDIRECT 関数」の使用例について
まとめています。

詳細

Excel 5.0 で用意されているワークシート関数についての詳細は、[?] - [キーワード で検索] コマンドを実行して「キーワード」に関数名を入力して検索するか、または [挿入] - [関数] コマンドを実行して [関数ウィザード] の <ヘルプ> を参照する ことができます。
本文書ではいくつかのワークシート関数を紹介しています。各関数についての詳細
は、オンライン ヘルプを参照してください。

機能

指定されたセルに入力されている文字列を介して、間接的なセルの指定を行いま
す。指定されたセルによって「セル参照」を返しますが、セル参照はすぐに計算
され、結果として目的のセルの内容を得ることができます。
「参照」についての詳細は「ユーザーズ ガイド」 139 ページ「数式で参照を使用
する」を参照してください。

用途

例えば、セル A1 に数式「=B1 」を入力します。この数式は、セル A1 にセル B1 と 同じ値を表示します (A)。しかし、 [編集] - [削除] コマンドを使ってセル B1 や
B 列全体を削除してしまうと、この数式の結果は、目的のセルが見つからず正しく
参照することができないというエラー値 #REF! が表示されます (B)。
目的のセルが削除されたとき、削除することによって新しく目的のセルへ移動し
てきたセルの内容を参照するなど、文字列を使用して間接的にセル参照を行いたい
場合は INDIRECT 関数を利用します (C)。
[GRAPHIC: ]

構文

    =INDIRECT(参照文字列,参照形式)
  <参照文字列>
  参照したいセルを示す文字列やセル参照を指定します。適切なセル参照を指定
  していないと、エラー値 #REF! が返されます。
  <参照形式>
  <参照文字列> で指定されたセルに含まれるセル参照の種類を、論理値で指定します。
  TRUE を指定すると <参照文字列> には A1 計式のセル参照が入力されていると
  見なされます。FALSE を指定すると <参照文字列 < には R1C1 形式のセル参照が
  入力されていると見なされます。
  <参照形式> を省略すると TRUE と見なされます。

使用例

ここでは、サンプル データ <表> をもとに解説します。
[GRAPHIC: ]

例 1

ブック BOOK1.XLS の ワークシート Sheet1 に入力します。
   =INDIRECT(A1,TRUE)                    または  =INDIRECT(A1)
セル A1 に入力されている文字列「 B2 」を A1 形式のセル参照と見なし、セル B2 に 入力されている値を返します。計算結果は Office です。
    =INDIRECT(A1,FALSE)
<参照形式> に FALSE を指定した場合、セル A1 に入力されている文字列「 B2 」は R1C1 形式のセル参照として不適切なので、計算結果はエラー値 #REF! となります。

例 2

ブック BOOK1.XLS の ワークシート Sheet1 に入力します。
   =INDIRECT(INDIRECT(A2,FALSE),TRUE)    または  =INDIRECT(INDIRECT(A2,FALSE))
INDIRECT 関数をネスト (入れ子) することによって、二段階のセル参照を行って
います。
まず、セル A2 に入力されている文字列「 R1C1 」を R1C1 形式のセル参照と見なし、 セル A1 に入力されている文字列「 B2 」を返します。次に、文字列「 B2 」を A1
形式のセル参照と見なし、セル B2 に入力されている値を返します。計算結果は
Office です。
     =INDIRECT(INDIRECT(A2))
<参照形式> を省略した場合は TRUE を指定したと見なされます。セル A2 に入力 されている文字列「 R1C1 」は A1 形式のセル参照として不適切なので、計算結果
はエラー値 #REF! となります。

例 3

ブック BOOK1.XLS の ワークシート Sheet2 に入力します。
  =INDIRECT(A1&"!"&B1&B2,TRUE)          または  =INDIRECT(A1&"!"&B1&B2)
<参照文字列> に「複数のセルに入力されている文字列を結合したセル参照」を指定 しています。
「 A1&"!"&B1&B2 」の結果は文字列「 Sheet1!B2 」となりますので、これを A1 形式の セル参照と見なし、ワークシート Sheet1 のセル B2 に入力されている値を返します。 計算結果は Office です。
「文字列の結合」についての詳細は「ユーザーズ ガイド」 134 ページ「文字列演算 子」、「ブック内の他のシートを参照」することについての詳細は 141 ページ
「ブック内の他のシートを参照する」を参照してください。

例 4

ブック BOOK1.XLS の ワークシート Sheet2 に入力します。あらかじめ、ブック
BOOK1.XLS のワークシート Sheet1 のセル B2 に「製品名」という名前を定義します。
  =INDIRECT(A2,TRUE)                    または  =INDIRECT(A2)、
                                                =INDIRECT(A2,FALSE)
名前とは、セル、セル範囲、または数式を参照するために作成する識別名です。
数式を入力する前に、あらかじめ名前を定義することが必要です。参照元セル範囲
(名前を付けるセル範囲、ここではワークシート Sheet1 のセル B2) を選択し、
[挿入] - [名前] - [定義] サブコマンドを実行します。[名前定義] ダイアログ
ボックスの [名前] ボックスに名前 (ここでは「製品名」) を入力し <OK> ボタン をクリックします。
定義された名前と同じ文字列が入力されているセルを参照することによって、
間接的にセル参照を行います。
セル A2 に入力されている文字列「製品名」から名前「製品名」に定義されている
ワークシート Sheet1 のセル B2 を参照します。計算結果は Office です (<参照 形式> は TRUE、FALSE または省略のいずれでも同じです)。
「名前」についての詳細は「ユーザーズ ガイド」 149 ページ「名前を使用して
参照を簡略化する」および 173 ページ「数式のリンクで名前を使用する」を参
照してください。

例 5

ブック BOOK2.XLS の ワークシート Sheet1 に入力します。あらかじめ、ブック
BOOK1.XLS のワークシート Sheet1 のセル B2 に「製品名」という名前を定義
します。
  =INDIRECT(A1&"!"&A2,TRUE)             または  =INDIRECT(A1&"!"&A2)、
                                                  =INDIRECT(A1&"!"&A2,FALSE)
「 A1&"!"&A2 」の結果は文字列「 BOOK1.XLS!製品名」となります。名前「製品名」に は参照範囲「 Sheet1!$B$2 」が定義されていますので、結果的に
「 [BOOK1.XLS]Sheet1!$B$2 」を参照することになります。計算結果は Office です (<参照形式> は TRUE、FALSE または省略のいずれでも同じです)。
「他のブック内のシートを参照」することについての詳細は「ユーザース ガイド」
171 ページ「リンクを使用して作業する」を参照してください。

関連情報

INDIRECT 関数が含まれるブックを閉じる際、前回の保存が行われてからブックの
内容を変更していないにもかかわらず「このまま <ファイル名> を保存します か ?」とメッセージが表示されることがあります。これは INDIRECT 関数が、
開かれたと同時に自動的に再計算を行う関数であるため、ブックを閉じようと
すると未保存の情報が含まれるとみなされることが原因です。
「変更していないブックを閉じる際、保存するか尋ねられる場合の原因」に
ついての詳細は 401634 をご覧ください。

Keywords: KBHOWTO KB402244
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch

inserted by FC2 system