目的:複数のシートにあるデータ(例:毎月の売上げ)を参照して、1枚のシートに総括したい。
方法:INDIRECT 関数(間接的にセルの値を参照する)を使用する。
例1:シート名をA1に入れ、そのシートのA2セルを参照するには、
=INDIRECT(A1 & "!A2")
例2:シート名が数値+文字(1月,2月,3月など)の場合、数値を(1,2,3など)をA1に入れ、そのシートのA2セルを参照するには、
=INDIRECT(A1 & "月!A2")
例3:上の場合、A1に数値+文字(1月,2月,3月など)を入れれば、例1と同じで、
=INDIRECT(A1 & "!A2")
**********************
追記(12/03/07):複数セルをセル参照して統合した表を作成する場合は、以下の方法が便利。
1)シート名をA列(A2以下)に入力
2)参照セル位置を第1行(B1,C1,・・・)に入れる(例:A1,A10,C1・・・)
3)B2セルに、=INDIRECT($A2 & "!" & B$1)
4)これを全セルにコピー
******************************
備考:INDIRECT(参照先文字列,参照形式)
参照先文字列:間接的に参照するセル番地やセル範囲、範囲名を文字列で指定。
参照形式:参照するセルの形式を指定。通常はA1形式なので、省略。INDIRECT(参照先文字列)で良い。
参考:[Excel] セルにシート名を表示する
http://kenkitagawa.cocolog-nifty.com/blog/2010/04/excel-4779.html
--------------------------------------------------------------
【追記(2011/10/18)】シート名にマイナス"-"がある場合
現象:#REF!エラー
原因:文字列として認識されないため?
対策:シート名を引用符「'」で囲む
シート名をA1に入れ、そのシートのA2セルを参照する場合、
=INDIRECT("'"&A1&"'!A2")
注)分かち書きして解説すると、
=INDIRECT(" ' " & A1 & " ' !A2 ")
3つに分かれ、' と A1 と '!A2
(A1のシート名が引用符「'」で囲まれている)
----------------------------------------------
重要追記:#REF!エラーが出たら、下記参照。
http://kenkitagawa.cocolog-nifty.com/blog/2012/01/excel-indirect-.html
[Excel] INDIRECT関数が特定のシートを参照できない
----------------------------------------------
【追記(2021/7/19】 INDIRECT関数を使わない簡単な方法
例1:シート名をA1に入れ、そのシートのA2セルを参照するには、
Sheets(Range("A1").Value).Range("A2")
例2:マクロで、シート名をA列以下に入れ、そのi行目のセルを参照するには、
Sheets(Cells(i, 1).Value).Select
参考記事:https://www.limecode.jp/entry/utility/getworksheet-from-cellvalue
シート名をセル値から取得してWorksheetを指定する方法
最近のコメント