- ベストアンサー
Excel2000のリスト入力について(1)
Excelの「入力規制」-「リスト入力」についての基礎的な使用方法は理解しています。 A列・B列の入力に「リスト入力」を考えています。 A列に「乗り物」が入力された場合、B列リストには飛行機・新幹線・自動車・・・ A列に「食べ物」が入力された場合、B列リストには寿司・天婦羅・ラーメン・・・ のように、B列のリストにはA列に関係のあるものだけを表示させたい。 と思っています。アドヴァイス宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
A B 1 乗り物 食べ物 2 3 飛行機 寿司 4 新幹線 天婦羅 5 自動車 ラーメン のようにリストを作成します。 2行目は空白にします。 A1からB5を選択して、 「挿入」-「名前」-「作成」で[上端]にチェックを入れて OK を押します。 A1からB1を選択して 「挿入」-「名前」-「定義」で名前を付けます。 リストを設定したいセルを選択します。 別のシートでも構いませんが、E1に設定したい場合 E1を選択して 「データ」-「入力規則」の[入力値の種類」で[リスト]を選択 [元の値]に = に続けて「定義」でつけた名前を入力します。 名前に「種別」とつけたとしたら、 =種別 F1を選択 「データ」-「入力規則」で[入力値の種類」で[リスト]を選択 [元の値]に =INDIRECT(E1) と入力します。 エラーがでますが「はい」を押します。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
(2)を回答しようと思ったのですが、締め切られました。 (1)に鞍替えして。確かにこのニーズはあり得ますね。OKWEB等数年見てますが時々出ます。VBAを使わない回答 もOKWEBや雑誌でみたことがありますが、思い出せなくてVBAでの回答を参考までに上げます。 (2)のご質問での希望はVBAを使わずですが、数行だけ(下記(5)(6)の部分)許してもらえば下記のようにすれば出来ます。 VBAを避けられているのは残念です。コンピュターでは 詳しい意味や仕組みなど判らないことも一杯使ってますよ。 (1)表示-ツールバー-コントロールツールボックス リストボックスのアイコンをクリックして、ワークシート上で+を右下方向へドラッグ (2)その中で右クリックしてプロパティをクリック プロパテイの一覧表が出る。 (3)その中のListFillRangeの右列に、リストを入れる セル範囲を入力。例F1:F5 Xをクリックして閉じる。 (4)シートのF1:F5に東京、大阪、名古屋、福岡、仙台 とか入力。 (5)リストボックス内でダブルクリックするとVBE画面に飛び、 Private Sub ListBox1_Click() End Sub が現れるから、 真中に挟んで Private Sub ListBox1_Click() Select Case ListBox1.ListIndex Case 0 ListBox2.ListFillRange = "g1:g3" Case 1 ListBox2.ListFillRange = "h1:h3" Case 2 ListBox2.ListFillRange = "I1:I3" End Select End Sub とする。(第1リストボックスの選択項目によって、第2ボックスの参照表の参照する表を変えています。) (6).「(4)(5)の同じ要領で」もうひとつ第2のリストボックスをワークシートに貼りつける。 (7)第2リストボックス内でダブルクリックするとVBE画面に飛び、 Private Sub ListBox2_Click() End Sub が現れるから、真中行に下記をコピペ。 Private Sub ListBox2_Click() ActiveCell = ListBox2.List(ListBox2.ListIndex) End Sub (何番目を選んだかを受取り、文字内容に変換してアクチブセルにセット) VBEのメニュの実行-「デザインモードの終了」をクリック (8)テスト用、例データ F1:F5に(営業所名) 東京 大阪 福岡 名古屋 仙台 G1:G3に(営業地域) 千代田区 港区 千代田区 H1:H3に 大阪市 堺市 東大阪市 I1:I3に 福岡市 久留米市 大牟田市 <使い方> 第1リストボックスの(営業所名)1項目をクリック 第2リストボックスに該当府県の市区が出る データを入れたいセルをポイント 第2リストボックスの市区を選択 これで指定セルにクリックした項目(市区名)が入る。 リストになければ、セルに直接入力すれば良い。 本番の場合どこをどう変えたら良いか判る程度なら、意味は詳しく判らなくても、ぜひ使って見てください。 FからI列までの表は他シートにおくことも出きると思います。Sheet2!とかを付けて範囲指定してください。 (参考) (2)(OKWEBの別質問の)の回答も兼ねています。第2リストボックスを作らず、第1リストボクスに対し Private Sub ListBox1_Click() ActiveCell = ListBox1.List(ListBox1.ListIndex) End Sub とすれば1行だけのVBAで済みます。
お礼
大変詳しくご説明を戴きましたが、今回はVBAを使わずにと考えていましたので・・・・。 どうも有難うございました。
- meru-k0110
- ベストアンサー率23% (13/55)
まずA列の設定は、通常のリスト設定(入力規制)して下さい(乗り物・食べ物)先ず、B列設定する前に同じシート内に乗り物のリスト(このリストは乗り物の種類を列にだ列して下さい)同じく食べ物リストも作成してください 各リストに名前を定義してください(乗り物・食べ物) B列に先ず入力規制の元の値の所に式=indirect(A1)入力して下さい indirect関数にかんしては、下記URL参照して下さい わかりづらい説明かもしれませんががんばってください。
お礼
どうも有難うございました。 「indirect関数」を使うのですね。 同じ趣旨の回答で、1分ですが早い方がおられたのでご免なさい。
カテゴリわけされ表示され、更にリスト数やカテゴリ数がどんどん増えても対応できる技があります。 書くよりリンクを張った方がいいかもしれません。 エクセル技道場 http://www2.odn.ne.jp/excel/ 「縦横可変範囲の名前定義でリスト」 http://www2.odn.ne.jp/excel/waza/validation.html#SEC5 このページの上に「 名前定義と[入力規則]-[リスト]シリーズ(1-5)に関連したサンプルファイル(3KB)」がダウンロードできるリンクがあります。 お勧めの優良サイトです。
お礼
早速の回答有難うございました。 大変参考になりました。
お礼
詳しい説明有難うございました。 何とか目的を達成できそうです。