独立した複数のプルダウンを連動させたい

このQ&Aのポイント
  • エクセルで独立した複数のプルダウンを連動させたい方法について教えてください。
  • A列で選択した商品に応じてB列とC列のプルダウンを連動させる方法を教えてください。
  • A列とB列の連動方法だけではなく、B列とC列が同じA列に連動する方法について教えてください。
回答を見る
  • ベストアンサー

独立した複数のプルダウンを連動させたい

エクセルで、1つのプルダウンを選択すると、別のプルダウンを連動させたいのですが、それが複数・独立してある場合です。 例えば、次のようなプルダウンを考えています。 商品     規格1         規格2 テレビ    液晶       40インチ テレビ     プラズマ      50インチ テレビ              60インチ ノートPC    パナソニック     12インチ ノートPC    東芝       13インチ ノートPC    マック       15インチ (うまく並べられず、見にくくてすいません) A列でテレビかノートPCを選択すると、B列とC列でそれぞれのA列で選択した商品に応じて、それぞれの規格の種類をプルダウンから選択できるようにしたいのです。 例えば、ノートPCを選択すれば、 B列では、パナソニックからマックまでのメーカを選択でき、 C列では、12インチから15インチまでのモニターの大きさを選択できるようになります。 つまり、B列・C列は、ともにA列に連動します。 A列とB列の連動だけであれば、名前をつけて、indirect関数を使用する方法がネットでも載っているのですが、 B列とC列がともに同じA列に連動する場合、同じ名前になるためうまく独立して連動させることができません。 どうしたらよろしいでしょうか。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 質問者様が御使いになられているExcelはどのバージョンのExcelなのでしょうか?  Excel2007以降(Excel2007も含む)のバージョンであれば以下の様にされると良いと思います。  まず、使用していない適当なシート(ここでは仮にSheet2とします)に下記の添付画像の様なリストを作成して下さい。  次に、C列~E列に各項目を入力し終えるごと(添付画像の例で言えばC2~E7までのデータを全て入力し終えるごと)に、C列~E列を選択してから、Excelウインドウの上の方にある[データ]タブをクリックし、現れた「データツール」グループ内の[並べ替え]ボタン(或いは[ホーム]タブの「編集」グループ内の[並べ替えとフィルター]ボタンをクリックすると現れる[ユーザー設定の並べ替え])をクリックして下さい。  すると「並べ替え」ダイアログボックスが現れますので、その中の「先頭行をデータの見出しとして使用する」と記されている箇所にチェックを入れ、「列」欄の「最優先されるキー」をC列の「商品」に設定してから、「並べ替え」ダイアログボックスの[OK]ボタンをクリックする事で、同じ商品名の商品の行同士が一塊に纏まっている様にして下さい。  次に、「商品をドロップダウンリストで選択するセル」が例えばA2セルである場合には、同じ行の「規格1をドロップダウンリストで選択するセル」を選択してから、[データ]タブをクリックし、現れた「データツール」グループ内の[データの入力規則]ボタンをクリックし、現れた選択肢の中にある[データの入力規則]をクリックして下さい。  すると「データの入力規則」ダイアログボックスが現れますので、その中の[設定]タブをクリックして下さい。  次に、現れた「入力値の種類」欄をクリックし、現れた選択肢の中から[リスト]を選択してクリックして下さい。  次に、現れた「元の値」欄に次の様な数式を入力して下さい。 =OFFSET(INDEX(Sheet2!$D:$D,MATCH($A2,Sheet2!$C:$C,0)),0,0,COUNTIF(Sheet2!$C:$C,$A2))  次に、「データの入力規則」ダイアログボックスの[OK]ボタンをクリックして下さい。  次に、同様の操作を「規格2をドロップダウンリストで選択するセル」に対しても行って、「元の値」欄に次の様な数式が設定されている入力規則を設定して下さい。 =OFFSET(INDEX(Sheet2!$E:$E,MATCH($A2,Sheet2!$C:$C,0)),0,0,COUNTIF(Sheet2!$C:$C,$A2))  以上です。

promet
質問者

お礼

ありがとうございます。 実際は、商品数も10個程度で、規格もいろいろ変わりそうなので、この方法ですとフレキシブルに対応できます。

その他の回答 (1)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>どうしたらよろしいでしょうか。 2行目からデータの入力規則を設定します。 A列は単純に商品リストをセル範囲で指定します。 B2セルにデータの入力規則でリストを選択し、元の値に次の数式を入力します。 =IF(A2="テレビ",$F$2:$F$3,IF(A2="ノートPC",$F$4:$F$6,$G$8)) $F$2:$F$3には液晶とプラズマの文字列を入力しているものとし、$F$4:$F$8にはパナソニック、東芝、マックの文字列が入力しているものとします。 $G$8は空欄とします。 C2セルにはB2セルに準じて次の数式でリストを指定します。 =IF(A2="テレビ",$G$2:$G$4,IF(A2="ノートPC",$G$5:$G$7,$G$8))

promet
質問者

お礼

ありがとうございます。シンプルで分かり易くて参考になります。 ただ、質問では商品が2つですが、実際は10個くらいを想定しているので、If関数だと対応が難しそうです。

関連するQ&A

  • プルダウン4つ連動+α

    ご質問させていただきます! よろしくお願いします。 googleで検索したのですが普通の4つのプルダウン連動は沢山あるのですが、私がやりたいのは、 A,B,C,Dのプルダウンがあったとしたら A、B、C、Dは通常に連動して Aを変更したときにBが連動されるのと同時にBの内容とは全く無関係な値が HTMLソースで <input type="hidden" value="hoge1"> <input type="hidden" value="hoge2"> <input type="hidden" value="hoge3"> <div>hoge1</div> <div>hoge2</div> <div>hoge3</div> となるようにしたいです。 これにはデータベースとの連携(PHP、MYSQL)を行なっていまして、 テーブルがA、B、C、Dとありまして テーブルAのカラムとしてhoge1,hoge2,hoge3,hoge4があります。 プルダウンAを変更したときにデータベースのhoge1,hoge2,hoge3が画面に表示されて同時にhiddenにもいれ プルダウンBはテーブルAのhoge4の値をもとに連携したいと考えています。 データベースの問い合わせは初めからでもいいですし、その都度の問い合わせでもいいと考えています。 本当にわかりにくくてすいません。 それではよろしくお願い致します。

  • 2つのプルダウンボックスの連動について

    <SELECT><OPTION></OPTION></SELECT>タグで作るプルダウンボックスについて質問です。 AとBの二つのプルダウンボックスを設置し、Aで選択された項目に合わせて、Bの表示項目を変更させたいと思っています。 この2つのプルダウンボックスを連動させる方法について、JAVAスクリプトを使った方法を知りましたが、利用者がブラウザでJAVAを切っていた場合は正常に機能しないのでしょうか? 利用者がブラウザでJAVAを切っていた場合にも対応できる連動の方法があればぜひ教えてください。

    • ベストアンサー
    • HTML
  • 2つのプルダウンを連動させる

    2つプルダウンがあったとき片方で選択した内容に応じもう一方のプルダウンの内容が 変更されるように以下のようなコードを書いてみました。 しかし、これだと1番目のプルダウンでAを選択した後、Bを選択しなおすと 2番目のプルダウンの選択肢には前回Aを選んだ時に表示されていた内容が 残ってしまいます。そこで 連動するプルダウンの内容を作成する処理(Forループの処理)の直前で  for (i=0; i<itemNum; i++) {   document.myForm.tableName.options[i] = new Option(null, null);  } という初期化処理を書いてみたのですが結果は同じでした。 解決するための何か良い方法はございますでしょうか。 <html> <head> <title>プルダウン連動サンプル</title> <script type="text/javascript"> table_name = [["10", "9", "8", "7", "6"], ["りんご", "メロン", "バナナ"], ["嵐"]]; function setMenuItem(n) { itemNum = table_name[n].length; // 項目数 //連動するプルダウンの内容を作成 for (i=0; i<itemNum; i++) { alert(table_name[n][i]); document.myForm.tableName.options[i] = new Option(table_name[n][i], table_name[n][i]); } //プルダウンの先頭を選択 document.myForm.tableName.options[0].selected = true; } </script> </head> <body onLoad="setMenuItem(0)"> <form name="myForm"> <select name="database" onChange="setMenuItem(this.selectedIndex)"> <option selected>A</option> <option>B</option> <option>C</option> </select> <select name="tableName"> </select> </form> </body> </html>

  • プルダウンメニュー連動後の処理について

    知識が乏しいため、お知恵を拝借したいと存じます。 Aのプルダウンの値を選択すると、Bのプルダウンの値が連動して表示されるところまではできたのですが、Bのプルダウンの値を選択すると選択した値に設定したサイトに移動させる方法がわかりません。 具体的に Aのプルダウンに東京都、大阪府と表示させ、 東京を選択するとBのプルダウンには港区、渋谷区 、大阪を選択すると大阪市、堺市 と表示させるところまではできました。 質問点は 大阪市を選択すると大阪市のサイトにジャンプさせたいのですが。 プルダウンを選択してすぐジャンプの方法と、配置したボタンを押下してジャンプジャンプの方法が 分かれば幸いです。片方でも構いません。 なにとぞご教授お願いいたします。

  • [Excel2010]プルダウンに連動させる関数

    プルダウンで項目を選ぶと、別に作ったリストから、プルダウン項目に連動した値が引っ張られてきて、その隣のセルに表示されてくれるようにしたいのですが、どのような関数を設定すればそれが可能でしょうか? たとえば、このような表を作りたい場合: ・B1セルに「自動車税」、C1「重量税」、D1「自賠責保険料」と表記 ・A2セルに、車種をプルダウンで表示させる設定をします。「乗用車」「軽自動車」「ライトバン」から選択できるように。 ・自動車税、重量税、自賠責保険料の、それぞれの車種の場合の金額を、同じシートの別の場所か、別のシートにリストを作っておきます。 ・A1セルで車種を選ぶと、連動して、車種に対応した金額を引っ張ってきてくれる。  「乗用車」を選ぶと、B2「34,500円」・C2「30,000円」・D2「24,950円」、  「軽自動車」だと、B2「7,200円」・C2「7,600円」・D2「21,970円」、  「バン」だと、B2「14,300円」・C2「7,600円」・D2「14,190円」・・・が、自動的に表示される ・・・というふうにしたい場合、B2・C2・D2セルに、どのような関数を設定すればよいでしょうか? ご存知の方、よろしければ教えてください。

  • プルダウンリストを別セルの値によって変える。

    あるセルにプルダウンリストを設定したいのですが、表示させるリストを同行の別セルの値によって変更したいのですがいい方法があるでしょうか? 例)参照セル   A列 → 1,2,3のいずれか数値が事前に入力されている。   プルダウン  B列 → A列値が1 or 2であればリストとして停止or残す の2値を選択。               B列値が3であれば削除or残すの2値を選択。  よく2つのプルダウンリストを連動させる方法は検索でヒットしますが、上記の様な方法がわかりません。わかる方ご教示願います。

  • 複数のプルダウンで

    PHPで複数のプルダウンからそれぞれ選んだ組み合わせによってリンク先が変わるものを作りたいのですが、どうしたらいいんでしょう? AとAを選んだ場合はAへ AとBを選んだ場合はBへ BとBを選んだ場合はCへ という感じにしたいのですが…

    • ベストアンサー
    • PHP
  • 連動するプルダウンリストの作成

    他にも似たような質問があるのですが、連動するプルダウンリストを作成しています。 二次元配列を使ったものはあるのですが、三次元以上の多次元配列を使ったものがないので質問させて頂きました。 下記のような内容でエリアと都道府県を選択できるプルダウンリストがあります。 これをJavascriptの三次元配列を利用してさらに市町村を選択できるリストを作成したいと思っています。 それぞれのプルダウンリストは、エリアの中でAを選択するとAのエリアの中にある都道府県が選択でき、都道府県を選択するとそれに該当する市町村が選択できるように連動するように作成したいと思っています。 ご指導お願いします。 <html> <head> <script language="javascript"><!-- function hoge(area){ var t=new Array();//optionの項目(text) var v=new Array();//optionのvalue if(area=='A'){ t[0]='A-1';v[0]='A1'; t[1]='A-2';v[1]='A2'; t[2]='A-3';v[2]='A3'; t[3]='A-4';v[3]='A4'; t[4]='A-5';v[4]='A5'; } else if(area=='B'){ t[0]='B-1';v[0]='B1'; t[1]='B-2';v[1]='B2'; } else if(area=='C'){ t[0]='C-1';v[0]='C1'; t[1]='C-2';v[1]='C2'; t[2]='C-3';v[2]='C3'; } else if(area=='D'){ t[0]='D-1';v[0]='D1'; t[1]='D-2 hogehoge';v[0]='D2'; } else{t[0]='都道府県'} var obj=document.frm.s2.options; obj.length=0; for(i=0;i<t.length;i++){ obj[i]=new Option(t[i]); obj[i].value=v[i]; } obj[0].selected=true; if(document.layers){window.resizeBy(-10,-10);window.resizeBy(10,10)} } //--></script> </head> <body> <form name='frm'> <select onChange="hoge(this.options[this.options.selectedIndex].value)"> <option value=''>エリア名</option> <option value='A'>エリアA</option> <option value='B'>エリアB</option> <option value='C'>エリアC</option> <option value='D'>エリアD</option> </select> <select name='s2' size=1 onChange="alert(this.options[this.options.selectedIndex].value)"> <option>都道府県</option> </select> </form> </body> </html>

  • 2つのプルダウンメニューを連動させてリンク先へ遷移

    2つのプルダウンメニューを連動させて、 ひとつ目のプルダウンメニュー内の条件にそれぞれ連動させた選択肢をふたつ目のプルダウンメニューで表示させ、 ふたつのプルダウンで選んだ項目に連動したリンク先へジャンプさせたいと考えております。 下記のソースで試した所、IE6ではOKでしたがFireFox、Safariでは ダメでした。(プルダウンじたいが表示されない) IE6と7、FireFox2と3、MacのSafari3で表示できるようにしたいので教えてください。 ちなみに私はHTMLレベルのスキルしかありませんのでできるだけ具体的に教えて頂けると助かります。 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>テスト</title> </head> <body> ↓ここにプルダウンが入る<br> <script type="text/javascript"> var printf = document.write; RightListStr = ["選択してください","条件A","条件B"]; LeftListStr = [["選択してください","",""],["選択してください","条件A-1","条件A-2"],["選択してください","条件B-1","条件B-2"]]; URL = [["","",""],["","http://条件A-1リンク先.com","http://条件A-2リンク先.jp"],["","http://条件B-1リンク先.com","http://条件B-1リンク先.jp"]]; printf('<form name="MyForm"><select name="RightList" onChange="ChangeList(this);">'); for(var i = 0; i < RightListStr.length; i++) printf('<option>' + RightListStr[i]); printf('</select> <select name="LeftList" onChange="MoveURL(this)">'); for(var i = 0; i < LeftListStr[0].length; i++) printf('<option>' + LeftListStr[0][i]); pritnf('</select></form>'); function MoveURL(LeftObject){ var RightObject = document.MyForm.RightList location.href = URL[RightObject.selectedIndex][LeftObject.selectedIndex]; return; } function ChangeList(RightObject) { var LeftObject = document.MyForm.LeftList; for(var i = 0; i < LeftListStr[RightObject.selectedIndex].length; i++) LeftObject.options[i].text = LeftListStr[RightObject.selectedIndex][i]; return; } </script> </body> </html>

  • 2つのプルダウンメニューで、同じものを選べないようにする

    ふたつの選択肢を選ぶために、プルダウンメニューがふたつ並んでいます。  例えばメニュー1の選択肢 ・A ・B ・C ・D  でAを選んだとき、メニュー2の内容が ・B ・C ・D  になるようにしたいのですが、どうすればいいでしょうか?  チェックボックスで選べる数をふたつまでにする、というのも方法としてはありなんですが、今回は都合上プルダウンメニューで実装したいのです。ご教授お願いします。

専門家に質問してみよう