【Excel関数】INDIRECT関数で「-」(ハイフン)を含む名前のシートを参照する方法

Windows PC

こんにちは、ふみです。みなさんは表計算ソフト「Microsoft Excel(エクセル)」でセルに入力されているシート名から値を集計することはありますか?

私の場合、以前勤めていた会社で工事番号のシート名から値を集計しようとしたことがありますが、その工事番号にはINDIRECT関数で参照すると「#REF!」エラーが表示されてしまう「-」(ハイフン)の文字が含まれていました。

セルに入力されたシート名から別シートを参照する

INDIRECT関数について

参照文字列からアドレスを読み取ってセルを参照する場合はINDIRECT関数を使います。
INDIRECT関数はカッコ内の参照文字列からセルを参照する関数です。
シート名が入力されたセルのアドレスと「!」(エクスクラメーション)、セルのアドレスの文字列をつなげると、セルに入力されたシート名のセルから値を参照することができます。

良く使われている記述方法

例えば、Sheet1のセルA1に「Sheet2」が入力されている状態でシート名が「Sheet2」のセルC3の値を引っ張ってくる場合、Sheet1の表示させるセルに次の数式を設定します。

=IF(A1="","",INDIRECT(A1&"!$C$3"))

これでSheet2のセルC3の値を表示させることができます。リスト形式のシート名から参照するときはシート名が入力されていないとエラーが発生するので、IF関数による空白処理は必須です。
複数のシートを一つのExcelファイルにまとめている時に、シート名のリストを参照して他のシートから値を集計するときに便利です。
しかし、シート名に「-」が含まれている場合、この記述方法では「#REF!」が表示されてしまいます。

-(ハイフン)を含むシート名でも機能する記述方法

-(ハイフン)を含むシート名でも「#REF!」が表示されないようにするには、シート名の両端に「’」(シングルクォーテーション)を追加します。「’」は Shift + 7 で入力できます。

Sheet1のセルA1に「00-1234」が入力されている状態で、シート名が「00-1234」のセルC3の値を参照する数式の記述方法は次のとおりです。

=IF(A1="","",INDIRECT("'"&A1&"'!$C$3"))

これでシート名が「00-1234」のセルC3の値を表示させることができます。
これは「-」を含まないシート名でも使える上位互換の記述方法です。
INDIRECT関数を使うときはシート名の両端に「’」を追加する方法で記述しましょう。

まとめ

  • セルに入力されたシート名のセルを参照するときはINDIRECT関数を使う
  • リスト形式でINDIRECT関数を使うときはIF関数による空白処理を併用する
  • INDIRECT関数を使うときはシート名の両端に「’」(シングルクォーテーション)を追加する

ありがとうございました。

コメント

タイトルとURLをコピーしました