エクセルの学校


[[20090510175900]] 『セルに入力したシート名のデータを参照』(ラパン) >>BOT

[ 初めての方へ | 一覧(最新更新順) |

|
| 全文検索 | 過去ログ | HOME ]

 

『セルに入力したシート名のデータを参照』(ラパン)

 1〜12月まで同じ様式の表のシート(シート名01〜12)からなるファイルがあります。
 それぞれのシートのデータを見るためにタブをクリックするのが面倒くさくなり
 以下のようなことを考えました。
 データのない表のシート(シート名00)を追加します。
 シート00の月のセル(例えばA1)に表示したい月のシート名(例えば01)を入力します。
 シート00のデータセルに他月のデータを参照します(例えば A3に +'01'!A3)。
 ここで +'01'!A3 を +'$A$1'!A3 に変えます※。
 A1に任意のシート名を入力して、その月のデータをちゃらんと表示させることを狙いました。
 でも、うまくいきません。
 ※の操作が出来ないのです。
 ファイルを参照しようとして、#REF!エラーになります。
 どうすればうまくいくんでしょう?


 A1セルのに入力したシート名のデータを表示したい
 と言うのなら、INDIRECT関数を使うと
 出来そうに思いますが。

 (HANA)


 こちらの「Sheet2」部分が
 セルの値を参照してくれれば良いのですよね。。。?
[[20090417154641]]『別シートの同じ番地セルの値を常に参照』(ラパン)

 こんな感じで。
=INDIRECT($A$1&"!"&CELL("Address",A3))

 追記:(念のため)
 参照セルが固定なら(或いは、各数式のセル名を
 変更していく必要があるのなら)CELL関数は不要です。
=INDIRECT($A$1&"!A3")

 (HANA)

 教えてもらったとおり入力したら期待した表示が出来ました。
 思わずヒューと声が出ました。
 ありがとうございます。 

 2年ほど前に数時間格闘して諦めたことを様々と思い出しました。
 まさか自分の発言にヒントがあるとは…
 応用が利かないとはこのことですねえ。
 はあぁ。

 表のセルにちゃらんとコピーしたいのであれば、前段の式が良いんですよね?

 (ラパン) 


 たとえば A3:C10の範囲を同じ大きさの範囲に同じ並びで参照させたい なんて場合は
=INDIRECT($A$1&"!"&CELL("Address",A3))
 の式を同じ範囲フィルドラッグすれば良いですね。

 たとえば、A3にA3 , A4にB5 , A5にC10
 の様に、とびとびで参照させたい場合は
=INDIRECT($A$1&"!"&CELL("Address",A3))
 の式をコピーしても、結局 この部分~~は
 書き替えなくてはいけないので、それなら
=INDIRECT($A$1&"!A3")
 をコピーして、  ~~ここを書き換えるのでも
 手間は変わりませんし、数式も短くて済みます。

 私は、上側の式よりも 下側の式の方が
 すっきりしていてどこが何を表しているのか
 分かりやすいと思います。

 ですので、たとえ写し取るような参照方法でも
 参照させる範囲が少ないのなら
 下側の式を入れて、問題の部分を書き換えた方が
 数式が分かりやすく 良いのではないかと思います。
   数が多い場合、簡単に入力できる方法があるのに(上側の式)
   それを捨ててまでこちらの式にするほどの利点はないと思いますが。

 状況がわからないので、もしかしたら
=IF(INDIRECT($A$1&"!"&CELL("Address",A3))="","",INDIRECT($A$1&"!"&CELL("Address",A3)))
 なんて式にする必要があるのかもしれません。

 この場合も、こちらの方が断然短くて済みますね。
=IF(INDIRECT($A$1&"!A3")="","",INDIRECT($A$1&"!A3"))

 どちらを使用しても同じ結果が得られると思います。
 上側の式は関数が一つ多いので、
 一つでも少ない方が軽いかもしれません。
 しかしこれも、数式を埋め込む範囲によると思います。

 後は、好みだったり 状況を見ながら
 決めてもらえば良いと思います。
 どの方法が一番良いかは、実際に使ったり
 設定をする人でないと分かりませんから。

 (HANA)

コメント:

[ 一覧(最新更新順) |

]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.