[[20030624235328]] 『続けてリストから選んでいく方法』(Y.T) ページの最後に飛ぶ

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

 

『続けてリストから選んでいく方法』(Y.T)

こんにちは。いきなりで申し訳ありません。

シート1のA1のセルのリスト選択で、元の値をシート2のA1からA10より定義した名前の中から1つ選択するものとします。
たとえば、シート1のセルでシート2のA1を選んだとします。そのあと、シート1のB1の元の値は、シート2のB1からB10より選ばせる方法ってありますか?
もしも、シート1のA1で、シート2のA2を選んだら、シート1のB1はシート2のC1からC10より、もしシート1のA1がシート2のA3なら、B1がシート2のD1からD10より、というふうにです。

分かりにくいかもしれませんが、

シート1のA1:シート2のA1〜A10より選択
      
      

もし、A1がシート2のA1なら、B1がシート2のB1からB10
      

もし、A1がシート2のA2なら、B1がシート2のC1からC10
      

もし、A1がシート2のA3なら、B1がシート2のD1からD10

といった感じで選択させるには、シート1のB1になにか数式を与えるのですか?それともVBAですか。
だれか、教えてください。

ちなみに、マクロの知識は余りありませんので、マクロでしたら、(すみませんが、)ちょっと詳しくお願いします。


 入力規則のリストを使って見てはどうでしょう。別シートの参照は出来なかったとおもいますが、使わないスペースにリストを作っておけば
上の様な事が出来ると思います。
 例えば、A10:J20の範囲でリストを作っておきます。
 A1を入力規則で[設定]のタブの[入力値の種類]を[リスト]を選択して[元の値]をA10:A20にします。
 B10:B20の名前をA10の入力値に定義します。C10:C20の名前をA11の入力値に定義するというような事をJ列までします。
 B1を入力規則で[設定]のタブの[入力値の種類]を[リスト]を選択して[元の値]を=INDIRECT(A1)とすれば望み通りになると思います。説明がヘタですいません。(ケン)

早速やってみましたが、B1セルの元の値を =INDIRECT(A1) にすると、”元の値はエラーと判断されます”とイルカがピーピーいいます。すべての値に戻してから、B1を =INDIRECT("A1")にするとA10が表示されますし、 =INDIRECT(A1,A10の入力値)にすると、#VALUE!になります。すいません、未熟なもので、もう少しご説明いただけませんか?

ちなみに、B10:B20の名前の定義は、挿入→名前→定義を選んで”A10の入力値”としてますが、これでOKですよね?


 説明不足ですいません。まず、”元の値はエラーと判断されます”は、おそらくA1が空白になっていませんか?その為エラーと判断されるます。そのまま進んで頂いて結構です。
 名前を定義するのはそのやり方でも結構です。
 ”A10の入力値”はそのままの文字を入れているのですか?簡単な例で説明させて頂きます。
       A          B        C
 1   東京支部   練馬支店   新宿支店
 2   大阪支部   河内支店   難波支店
 とリストがあったとします。B1:C1を名前を 東京支部 と定義します。B2:C2を 大阪支部 と定義します。
 A3を入力規則でリストにして元の値を=A1:A2としてB3を=INDIRECT(A3)として、動作確認して
みてください。後は応用です。(ケン)

ケンさん、ありがとうございます。早速やって、がんばってみます。

 シート2のままでもデータ参照してリスト表示することができます。
 シート2のデータが下のように10行あると仮定します。
       A     B    C  D
 1   A1列  B1	C1   D1
 2   A2列  B2	C2   D2
 3   A3列  B3	C3   D3
 4	    B4	C4   D4

 A1:A3を仮に「列名」と名前を定義します。
 「A1列」の名前でB1:B10まで登録します。
 「A2列」の名前でC列のデータを、「A3列」の名前でD列のデータを登録します。
 シート1のB1のセルの「入力規則」⇒「リスト」の「元の値」に
 =INDIRECT(VLOOKUP(A1,列名,1,0)) と指定して「OK」をクリックします。
 これでA1のセルに「A2列」と入力すると、B1のリストには「C1〜C10」まで
 表示されるはずです。(すーさん)

できました!ケンさん、すーさん、ありがとうございました。勉強になりました。また、分からない事があったら、宜しくお願いします。

 なるほど・・・勉強になります。[すーさん]さんありがとうございます。(ケン)

いまさらなんですけどすいません。
いままでの内容はA1列・A2列・A3列と名前を固定、定義しているのですが、これを固定せず指定したセルに入力されているデータで判断できるようにはならないものでしょうか?(すもうライダー)

 「A1列」というのは仮につけたもので、固定のつもりはありません。
 ただB列とC列のデータがどんなもので「見出し」の項目名がどのようなものか分からなかったので、
 そうしたまでです。
 質問の「指定したセルに入力されているデータで」という意味がちょっと理解できないのですが、
 先に回答したのは、仮にA1に「東京地区」と入力したとき、B1に入力したい支店名を、
 「東京地区」という定義名で登録した「○○支店・××支店・△△支店・」というリストを
 表示させることなのですが、それとは違うことなのでしょうか?(すーさん)

説明が悪くてすいません。

       A          B        C
 1   東京支部   練馬支店   新宿支店
 2   大阪支部   河内支店   難波支店

 とリストがあったとき、B1:C1を名前を 東京支部 B2:C2を 大阪支部 と定義すればよい
のですが、定義した東京支部が東京営業所に変わったり関東支社に変わったりした場合、定義も
都度修正しなくてはならないですよね。。それで 『東京支部』で定義ではなく『セルA1』で定義みたいなことがしたいのですけど・・・・ 
また定義する件数も200件くらいあるので大変なのです(すもうライダー)

 横から失礼します。
 すーさんの方法の応用で出来ると思います。
 A列の定義名はそのままで、B列に列挿入し固定名(『セルA1』に相当)をそれぞれ入力。
 C列以降はこの固定名で名前を定義します。
 A1:B2に対し新たに名前を○○と定義します。
 =INDIRECT(VLOOKUP(A1,列名,1,0))  ←この式を
 =INDIRECT(VLOOKUP(A1,○○,2,0))  とすれば出来るのではないでしょうか?(sin)


すいません。具体的に教えてもらっていいですか?

       A          B        C
 1   東京支部   練馬支店   新宿支店
 2   大阪支部   河内支店   難波支店
 3   中部支部   名古屋支店  尾張旭支店

 A6 で 支部 を選択
 A7 に 支店のリストを表示
 
という場合でお願いします。(すもうライダー)

 sinさんの方法を説明しますと、まずB列を追加して固定の支部名を入力します。
      A          B        C            D
     入力支部名  固定支部名  支店名1    支店名2
 1   東京営業所  東京支部   練馬支店   新宿支店
 2   大阪支部   大阪支部   河内支店   難波支店
 3   中部支部   中部支部   名古屋支店  尾張旭支店

 「東京支部」「大阪支部」「中部支部」の登録は、前記述の通り行い、
 「支部名」の名前登録のときに、参照範囲を $A$1:$B$3 と指定します。
 A7のセルの「入力規則」⇒「リスト」の「元の値」に =INDIRECT(VLOOKUP(A6,支部名,2,0)) と登録します。
 A6に「東京営業所」と入力すればA7の▼をクリックすると「練馬支店」と「新宿支店」が
 表示されます。 
 こうしておけば支部名が変更になったときは、A列の支部名を変更することで
 対応できるということです。(すーさん)

 衝突しちゃいました。
 すーさん、ご説明ありがとうございます。
 元々は、すーさんのご回答を勉強させていただいた結果です。
 実際、入力規則はまず使わないので、別シートの参照が出来ない事も今回初めて知りましたし、
 名前を定義しての応用にもなりました。
 今後ともすーさんをはじめ皆さまのご回答を参考にさせていただきます。(sin)


失礼して便乗質問をさせてください。

=INDIRECT(VLOOKUP,XX,X,X) にてプルダウンリストにリストさせることに成功しました。 ありがとうございます。 

ところが、同じ列にそのまま入力規制をコピーし設定しても、プルダウンリストにリストされるものとされないものと出てきてしまいました。 

例えば、下記のようにA列で東京・神奈川を選ぶとB列には各区市名がリストされます。
しかし、A列で埼玉 選ぶとプルダウンには何もリストされず、右クリックでリストから選択をすると A列の東京・神奈川・埼玉 が出てきてしまいます。

      A       B        C       D     
 1  東京    港区       中央区  新宿区
 2  神奈川  横浜市      川崎市   小田原市
 3  埼玉  さいたま市   上尾市  蕨市

何故こういう現象が起こりうるかアドバイスいただけますでしょうか? 

せっかく途中までうまくいっていたのに ちょっと悔しい思いをしています。(うき)


 恐らく参照が間違っているのでしょう。すもうライダーさんの場合はVLOOKUP関数を使った方法
がお薦めですが、そうでない場合は名前の定義さえすれば=INDIRECT(**)だけで大丈夫です。
手順を説明します。
@A1:A3を名前の定義で(ここでは)都市名とします。
AB1:D1を名前の定義で東京とします。
BB2:D2を名前の定義で神奈川とします。
CB3:D3を名前の定義で埼玉とします。
DA4を入力規則でリストで元の値を=都市名とします。
EA5を入力規則でリストで=INDIRECT(A4)とします。
こんな感じでうまくいくはずですが・・・(ケン)


みなさん、お騒がせしました。やっとできました。
ありがとうございました。(すもうライダー)


私もできました。とても快適です。 ありがとうございました。(うき)

コメント返信:

[ 一覧(最新更新順) ]


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