[[20090716112539]] 『offset関数の中にindirect関数は使えるのでしょう』(kiyo) ページの最後に飛ぶ

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

 

『offset関数の中にindirect関数は使えるのでしょうか?』(kiyo)

以前に一度質問をさせていただいたのですが、今一度どうしても自力で解決できない疑問点がございまして、ご助力お願いできませんでしょうか?

offset関数とvlookup関数を組み合わせて以下のような関数を作りました。

=VLOOKUP(1,OFFSET('7月'!A3,0,0,COUNTA('7月'!A:A)-1,33),2)

7月のシートにある、可変の領域についてvlookupを実行する、という内容です。
この関数自体はうまく動いたので、今度は「7月」の部分について「A1」のセルに
「7月」とシート名を入力する関数組むことで、7月だけでなく、他のつきのシートも
同様の方法で参照する式を作りたいと思いました。

方法を探していたところ、indirect関数が有効そうだ、というところまで
いったのですが、適切だと思って式を入力しても無効になってしまいます。

A1のセルにシート名を入力することで参照シートを可変にできるように上記の
関数を変えるにはどうしたらいいのでしょうか?

いつもお世話になりっぱなしで恐縮ですが、アドバイスいただけたら幸いです。
よろしくお願いします。


 どんな数式にしましたか?

 まず、
 A1セルのシート名のA3セルを参照する関数
 A1セルのシート名のA列のデータをCOUNTAする関数
 別々に作ってみられてはどうでしょう?

 (HANA)


早速の返信ありがとうございます。
大変申し訳ありませんが、

=VLOOKUP(1,OFFSET('7月'!A3,0,0,COUNTA('7月'!A:A)-1,33),2)

この式のどこにINDIRECTを入れればいいのかわからないのです。
浅学なもので、厚かましいお願いかとは思いますが、具体的にどのような関数を
入力すればいいのか教えていただけませんでしょうか?


 ですから、先の質問につながるわけですが。。。

 それとも、INDIRECT関数の使い方
 「A1セルのシート名のA3セルを参照する関数」が分からない
 って事ですか?

 (HANA)

 とりあえず、

 '7月' → INDIRECT(B1&"!A1") 

 のように変えて、B1に 7月 と入力したらどうなります?
 (tora)


返信ありがとうございます。

私がそもそも作りたかった式(vlookup, offset含めて)は、
「A1セルのシート名のA3セルから、数字の入った部分全てを参照して、vlookupをする関数」なのです。
数字の入ったセルとは、7月のシートにしろ、6月のシートにしろ、どんどん表に、数字を付け加えていく、つまり、vlookupの参照エリアが大きくなったり小さくなったりするものですから、offset関数とcounta関数を組み合わせて、常時変更させれるエリアに対応できるようにしました。
その上で、集計シートにおいて、A1セルにシート名を入れたときに、そのシート上でのエリアを指定したかったのですが、その方法がわかりませんでした。

大変複雑でわかりにくいかと思いますがどうかよろしくお願いします。


 当初から、なさりたいことは分かっているつもりです。

 その上での質問ですが、お答えに成られる気が無い様ですので
 私からのコメントは、これまでとします。

 主張することは大切ですが、
 人の話も聞かないと、主張しても聞いてもらえなくなりますよ?

 (HANA)

HANAさま:

すみませんでした。
質問されていることに対し、私がやろうとしていることが理解されていないのではないか?
とおもったので、繰り返し主張をしてしまいました。
もうしわけありません。


 >適切だと思って式を入力しても無効になってしまいます。 

 と冒頭で書かれているので、

 >どんな数式にしましたか?

 とHANAさんは聞かれたのだと思うのですが^^;
 また、既にINDIRECT関数の具体的な使い方についてもヒントが出てますね。

 それで、結局お答えにならず

 >もうしわけありません。 

 でこの質問はお終い、と言う事ならばそれでも良いのですが、こういった場所で
 そのような謝罪(?)だけの書き込みをされても、互いに何の得にもなりませんよ?

 有益な情報を得たくて書き込みされたのでしょうから、質問されたにも関わらず
 「教えて」ではなく、まずは答えてみた方が結果としてご自身の為になると思います。

 (Dil)

 諸先輩方のお導きを無視するようで申し訳ありませんが、
INDIRECT関数は、理解に苦しんだ 特異な関数 の一つでしたので、まんまを書いちゃいます。

 多分、シート名に対してだけINDIRECT関数を使っているのでは、ないでしょうか?
INDIRECT関数のヘルプから、抜粋すると
参照文字列によって指定されるセル参照を返しますが・・・ とあります。
【セル指定部分まで】をINDIRECT関数内に入れてあげてください。

 =VLOOKUP(1,OFFSET(INDIRECT("'"&A1&"'!A3"),0,0,COUNTA(INDIRECT("'"&A1&"'!A:A"))-1,33),2)
                   ~~~~~~~~~~~~~~~~~~~~~~~            ~~~~~~~~~~~~~~~~~~~~~~~~
INDIRECT("'"&A1&"'!A3")
         ~~~~    ~  この部分は、
シート名によっては、'****'!と ''で括らないとシート名と認識されない場合があるので入れてます。
(ご提示の式でも使われてるので、ご存知とは思いますが)
A1セルに『7月』と入力の場合、【'7月'!A3】という文字列(' と 7月 と '!A3 とを『&』で繋げた文字列)が、
INDIRECT関数の参照文字列となります。

 別件:VLOOKUP式で2【列目】を指定しているなら、OFFSET関数の【幅】部分も33→2でよいのでは?
(sin) 飛び入り御免。。。


コメント返信:

[ 一覧(最新更新順) ]


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