[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件により別シートにある内容を個別に呼び出す』(たび)
いつもお世話になっております。 条件によって別シートにある内容を隣のセルにリストとして呼び出し たいのですが、うまくいかず困っています。 お教え願えませんか?宜しくお願いします。 エクセルのバージョンは2003です。
Sheet1に以下のような入力表があり(100行) A B 1 項目 内容 2 3 4 ・ ・ ・ 100
Sheet2には以下の一覧表(列:100,行:30)があり、1行目の選択1〜選択100までを
名前→定義で「選択」と名前を付けてあります。
A B C D E F G CV
1 選択1 選択2 選択3 選択4 選択5 選択6 選択7 … 選択100(100列)
2 あ1 い1 う1 え1 お1 か1 き1 …
3 あ2 い2 う2 え2 お2 か2 き2 …
4 あ3 い3 う3 え3 お3 か3 き3 …
5 あ4 い4 う4 え4 お4 か4 き4 …
・ ・ ・ ・ ・ ・ ・ …
・ ・ ・ ・ ・ ・ ・ …
30 あ30 い30 う30 え30 お30 か30 き30 …
Sheet1A列の項目欄に入力規則→リストで「=選択」が入れてあります。 そこで、Sheet1!A1に「選択1」が選ばれた場合、隣のセルB1の内容欄に Sheet2!選択1(A列)以下の「あ1」 〜「あ30」をリスト表示で選択できる ようにし、同様に「選択2」が選ばれた場合はSheet2!B列「い1」以降を 選択というように選択100まで一覧表の選択名に対応した項目が表示される ようにできないでしょうか? 入力表と一覧表の保存シートが違うので、入力規則→ユーザー定義に =IF(A2=Sheet2の選択1の場合,Sheet2の「あ1」:「あ30」,IF(A2=…… 選択100まで一個ずつ設定みたいな事が出来ません。 もし出来たとしても選択肢が100もあるので実用的ではありません。 また、ここではSheet1でけで表現していますが、毎日1枚のシートを使い ますので、同Book内に30枚ほど同じ設定が必要なシートがあります。 どうすればすっきりうまく表示できるのでしょうか? ご教授宜しくお願い致します。
選択1 → Sheet1の1列目 選択2 → Sheet1の2列目 選択3 → Sheet1の3列目
ってこと?
入力規則 リスト の元の値 に
=INDIRECT(ADDRESS(2,SUBSTITUTE(A1,"選択",""),,,"Sheet2")&":"&ADDRESS(30,SUBSTITUTE(A1,"選択","")))
(GobGob)
GobGobさん ありがとうございます。 説明が下手で申し訳ありません。 >選択1 → Sheet1の1列目 >選択2 → Sheet1の2列目 >選択3 → Sheet1の3列目
という意味ではなく、Sheet1の1列目(A列)の項目はSheet2の1行目「選択1〜選択100」を 入力規則のリストで選べるように既に設定してあります。 Sheet1の1列目でリストから「選択1」を選んだ場合、Sheet12列目(B列)の内容欄に Sheet2の「選択1」以下の「あ1〜あ30」がリストで表示され、そこから選択する。 Sheet1の1列目で「選択2」が選ばれた場合はSheet2で「選択2」以下の「い1〜い30」が Sheet1の2列目でリスト表示されるというようなものを作りたいのです。
(たび)
そのつもりなんだけど。。。。
=INDIRECT(ADDRESS(2,MATCH(A1,範囲,),,,"Sheet2")&":"&ADDRESS(30,MATCH(A1,範囲,)))
※「範囲」は実際のSheet2、1行目に設定した名前。またはINDIRECT("Sheet1!1:1")
(GobGob)
読解力不足で失礼しました。 式の意味とかいろいろわからない事だらけなので質問させて頂きます。 教えて頂いた式はSheet1の入力表の2列目「内容」欄に入れるのですよね? 名前は「選択」なので =INDIRECT(ADDRESS(2,MATCH(A1,範囲,),,,"Sheet2")&":"&ADDRESS(30,MATCH(A1,範囲,))) の「範囲」部分を「選択」に置き換えてリストの元の値に入れてみたのですが、エラーになって何も 表示されません。どこに問題があるのでしょうか? お手数お掛けして申し訳ありませんが、お教え願いますか。
(たび)
その通りだけど、 当方はエラーでないよ。
(GobGob)
ADDRESS関数はセル位置を文字列として返す。
ADDRESS(行番号, 列番号, [参照の型], [a1], [シート名])
例
ADDRESS(2,1) ⇒ "$A$2" を返す ADDRESS(2,1,4) ⇒ "A2" を返す (相対参照) ADDRESS(2,1,4,FALSE) ⇒ "R[2]C[1]" を返す (R1C1) ADDRESS(2,1,,,"Sheet1") ⇒ "Sheet1!$A$2" を返す
この列を数式で返してるんですわ。
@MATCH(A1,範囲,) ⇒ A1セルに入力された値が「範囲」の範囲の何番目にあるか?を返す(逐次サーチ) AADDRESS(2,@の数式,,,"Sheet2") ⇒ R 2行目 C@の結果列目をSheet2のセル位置として文字列で返す。 (@の結果が2 なら ADDRESS(2,2,,,"Sheet2") ⇒ "Sheet2!$B$2")
B同様に30行目も文字列で返す(但しシート名はなし) CADDRESS()&":"&ADDRESS() ⇒ 文字列演算子でくっつける。 (@の結果が2なら "Sheet2!$B$2:$B$30″)
D Cの結果をINDIRECT
こんな感じっす
(GobGob)
GobGobさん
詳細に式の解説頂きありがとうございます。 意味は理解できましたが、なぜかエラーになってしまう…。 再度1つずつ意味を確認しながら完成するまでトライしてみます。 2日間にわたりお手数お掛けして申し訳ございませんでした。 どうしても出来ない場合はまたお助け下さいませ。 ありがとうございました。
(たび)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.