[[20100307000806]] 『INDIRECT関数でのセルの参照したものをオートフィ』(ダイレクト) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『INDIRECT関数でのセルの参照したものをオートフィルでコピー』(ダイレクト)
 INDIRECT関数で別シートのセルB2からB5までを参照する場合、
例えばSheet1のA1に
=INDIRECT("Sheet2!B2")
と入力すると値が表示されます。

 しかし、A1からA4までをオートフィルしても同じ値が表示されます。
オートフィルでSheet2のセルB2からB5までを参照させるにはどうすればよいでしょうか?
INDIRECT関数の参照文字列のB2の行番号だけを変化させるには
同じシートの適当な列に数字を入力しておき参照する方法をとる場合どのような数式になるのでしょうか?

 いろいろ試したのですがダメでした。
=INDIRECT("Sheet2!B"&"C2"))」など間違ってますが。
(このときC2からC5まで2〜5の数字を入力してます)

 Excel2003
WindowsXP

 >いろいろ試したのですがダメでした。
 非常に惜しいところまで行っていると思います。

 >=INDIRECT("Sheet2!B2")
 の様に書いた場合、Sheet2のB2セルの値が表示されますね?
 なぜなら、引数に「Sheet2!B2」の様に、Sheet2のB2セルが
 文字列として指定されているからです。

 B3セルを参照したければ
 Sheet2!B3 と言う【文字列】を作れば良いです。

 たとえば、C2に「2」が入っている時に
 D2に ◆2 と言う文字列を作りたかったら
 特に何の疑問もなく「="◆"&C2」
 と言う式を作成されると思います。
 「="◆"&"C2"」??なんてやりませんよね?
         ~~~~ココは文字列ではなくセル番地ですから。

 ◆が、Shet2!B だと思ってみると
 「="Sheet2!B"&C2」とされると思いますよ。

 この様にして出来た文字列部分を
 INDIRECT関数の引数に入れれば良いので
 =INDIRECT("Sheet2!B"&C2)
 ですね。             ~~ココはセル番地

 ちなみに、ROW関数を使うと
 下にフィルドラッグで 1,2,3・・・と言う値を得られます。

 (HANA)

 INDIRECT関数の括弧の中身を「参照を表現する文字列」にできるかどうかです。
A1からオートフィルして
"Sheet2!B2"
"Sheet2!B3"
"Sheet2!B4"
 ・
 ・
 ・
という文字列を作る「文字列結合式」をまず作ることを考えましょう。
A1に  ="Sheet2!B"&ROW()+1  これをフィルドラッグしてみましょう。
 
ちなみに、
"Sheet2!B"&"C2" "Sheet2!BC2" という文字列。
"Sheet2!B"&C2 "Sheet2!B"という文字列とセルC2のセルの値が結合された文字列。
        セルC2が「2」なら、"Sheet2!B2" という文字列。
""で囲まれるかどうかで結果が違うのはわかりますよね。
(みやほりん)(-_∂)b

 > オートフィルでSheet2のセルB2からB5までを参照させるには
 > どうすればよいでしょうか?

 やりたいことはホントに ↑ なことなんですか?

 =Sheet2!B2 でいいのでは?
 
 
 例を簡単に書きすぎましたってことなら
 変に簡略化せずにやりたいことをストレートに書いて下さい。

 ちなみに
 > このときC2からC5まで2〜5の数字を入力してます
 ということなら、INDIRECTのような揮発性関数ではなく

 =INDEX(Sheet2!B:B,C2)

 とした方がいいと思います。

 (sky)


 衝突したけど、書いたのでー

 =Sheet2!B2
 でオートフィルじゃだめなんですか?
 INDIRECTを使う利点はオートフィルなどに干渉されないある意味での絶対参照だと思っているので
 ちょっと不思議です。

 もし使うとしたら
 =INDIRECT("Sheet2!B"&ROW()+1)
 とするか、

 B列C列D列に作業列を作って
	[A]                             	[B]	[C]	[D]
[1]	=INDIRECT(CONCATENATE(B2,C2,D2))	Sheet2!	B	2
[2]	=INDIRECT(CONCATENATE(B3,C3,D3))	Sheet2!	B	3
[3]	=INDIRECT(CONCATENATE(B4,C4,D4))	Sheet2!	B	4

 とかいかがですか?
 こうすればC列をABCと変化させることで行方向にフィルダウンさせても、参照範囲は列方向に
 参照していきます。

 【偶数シートの串刺し】
	[A]                             	[B]	[C]	[D]
[1]	=INDIRECT(CONCATENATE(B2,C2,D2))	Sheet2!	B	2
[2]	=INDIRECT(CONCATENATE(B3,C3,D3))	Sheet4!	B	2
[3]	=INDIRECT(CONCATENATE(B4,C4,D4))	Sheet6!	B	2

 【行方向にコピーして、列方向に参照】
	[A]                             	[B]	[C]	[D]
[1]	=INDIRECT(CONCATENATE(B2,C2,D2))	Sheet2!	B	2
[2]	=INDIRECT(CONCATENATE(B3,C3,D3))	Sheet2!	C	2
[3]	=INDIRECT(CONCATENATE(B4,C4,D4))	Sheet2!	D	2

 (通りすがり)

 =INDIRECT("Sheet2!B2")
と入力すると値が表示されます。

 しかし、A1からA4までをオートフィルしても同じ値が表示されます。

 =Sheet2!B2  をオートフィルすれば
=Sheet2!B3
=Sheet2!B4 になりますよ

(通りすがりHANA)


みなさん本当にいろいろな説明ありがとうございます。あえてINDIRECT関数をつかったのは問題集に載っていたのですが、答えが表示されていなかったからです。ROW関数を使ったら出来たのでOKとします。
ちなみに問題集は、ソフトバンクパブリッシング株式会社の「やってトライ Excel2002関数編」のStep1第18問のコラム欄です(かなり昔の書籍ですが)

コメント返信:

[ 一覧(最新更新順) ]


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