こんにちは、ふみです。みなさんは表計算ソフト「Microsoft Excel(エクセル)」でセルに入力されているシート名から値を集計することはありますか?
私の場合、以前勤めていた会社で工事番号のシート名から値を集計しようとしたことがありますが、その工事番号にはINDIRECT関数で参照すると「#REF!」エラーが表示されてしまう「-」(ハイフン)の文字が含まれていました。
CONTENTS
セルに入力されたシート名から別シートを参照する
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関数を使うときはシート名の両端に「’」(シングルクォーテーション)を追加する
ありがとうございました。
コメント