エクセルの連動ドロップダウンリストの作成方法と注意点

このQ&Aのポイント
  • エクセル2003で連動したドロップダウンリストを作成する方法について教えてください。データはsheet2にあり、メーカーを絞り込んで商品を選ぶと価格が表示されるようにしたいです。
  • 40以上のメーカーと2000以上の商品データを組み合わせた連動ドロップダウンリストをエクセル2003で作成したいです。重複しないドロップダウンリストを作成する方法も教えてください。
  • エクセル2003で連動ドロップダウンリストを作成する際、データは随時変更することがあるため、注意が必要です。データ変更に対応する方法も教えてください。
回答を見る
  • ベストアンサー

エクセルの連動ドロップダウンリストについて教えてください

エクセル2003です。 連動したドロップダウンリストを作りたいのですがデータに制約があります。データはsheet2にあり下記のような感じです。 A列       B列     C列 メーカーA  商品名A  価格A メーカーA  商品名B  価格B メーカーB  商品名C  価格C メーカーB  商品名D  価格D このデータをsheet1で使いたいのですが、総数で2000件以上あります。 メーカ数は40以上あります。A1セルでメーカー名を使って1回目の絞り込みをしてB1セルで 商品を選ぶとC1セルにその商品の価格が入るようにしたいのですが、 良い方法を教えてください。 できれば最初にメーカーを選ぶときにドロップダウンリストに重複して 同じメーカー名がでないようにフィルターもしたいです。 あと、データー自体は随時変更するのでデータはどんどん変わっていきます。よろしくお願いいたします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です! たびたびごめんなさい。 投稿した後で質問文を読み返してみました。 >あと、データー自体は随時変更するのでデータはどんどん変わっていきます。よろしくお願いいたします。 の部分を考慮に入れていませんでした、この場合いちいちフィルタをかけて貼り付けは大変ですので 自動でSheet3に商品名が表示する方法を考えてみました。 配列数式になってしまいますので、コンピュータの負担を考えるとあまりよろしくないと思いますが、 作業列ばかり増えても困りますので、敢えて配列数式にしています。 この画面からコピー&ペーストしただけではエラーになると思います。 Sheet3のA2セルに貼り付け後、F2キーを押すか、数式バー内で一度クリックしてください。 編集可能になりますので、Shift+Ctrl+Enterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 Sheet3のA2セルに =IF(SUMPRODUCT((Sheet2!$A$2:$A$2000=Sheet3!A$1)*(Sheet2!$B$2:$B$2000<>""))<ROW(A1),"",INDEX(Sheet2!$B$2:$B$2000,SMALL(IF(Sheet2!$A$2:$A$2000=Sheet3!A$1,ROW($A$1:$A$1999)),ROW(A1)))) として、Shift+Ctrl+Enterです。 これを列方向と行方向にコピーすると前回手作業で貼り付けしていた方法は必要なくなります。 名前定義の方法は前回同様です。 尚、前回メーカー名を表示させる場合数式をSheet3のA3セルに!と書いていましたが、 A1セルの間違いです。訂正してください。 そして、数式は2000行目まで対応できるようにしていますが、データがそれ以上だという事みたいですので、数式内の2000の部分をアレンジしてみてください。 今回も長々と書いてしまいました。 何度も失礼しました。m(__)m

katkat24
質問者

お礼

ありがとうございます。早速試してみました。 うまく行きました、感動です。1週間近く悩んでいたのですっきりしました。 ただ一点だけですが、やはりデータ数が多いいため処理が遅くなって しまいます。フリーズしたのかと思うほど重いです。とりあえず sheet4を作ってsheet3の内容を形式指定貼付けで値だけコピーしました。 sheet3はデータが変わった時だけ再計算させるようにしておけば当面は 問題なく使えそうです。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 直接の回答にならないかもしれませんが・・・ 質問を読ませてもらっていて、もしかして、メーカーによっては扱っていない商品もあるのではないか?と思いますので、 メーカーをリストで選択後、扱っていない商品を選択してもエラーになるような気がします。 そこで一つの案ですが、 ↓の画像のようにSheet3にSheet2のデータをまとめてみました。 Sheet2に作業用の列を2列設けています。 (Sheet3にメーカーを重複なしに抽出するためと、メーカーが扱っている商品をメーカーの名前の下に表示させるためです。) Sheet2の作業列D2セルに =IF(COUNTIF($A$2:A2,A2)=1,ROW(A1),"") E2セルに =A2&B2 として、D2・E2セルを範囲指定し、E2セルのフィルハンドルでダブルクリック、又はオートフィルで下へコピー そして、Sheet3のA3セルに =IF(COUNT(Sheet2!$D$2:$D$2000)<COLUMN(A1),"",INDEX(Sheet2!$A$2:$A$2000,SMALL(Sheet2!$D$2:$D$2000,COLUMN(A1)))) という数式を入れ、ずぃ~~~!っと列方向にコピーします。 これでSheet2のメーカー名が重複なしに表示されます。 次にSheet2の表でメーカーごとにフィルタをかけ、表示されたものの商品名だけをコピーし、Sheet3のメーカーの下へ貼り付けていきます。 これを全てのメーカーで行います。 これでSheet3にメーカー名と扱っている商品名の一覧表が出来ますので ここで名前定義します。 1行目(↓の画像ではA1~C1)を範囲指定 → 仮に「メーカー」と名前定義したとします。 当方使用のExcel2003の場合は 範囲指定後 → メニュー → 挿入 → 名前 → 定義 でOK (範囲指定後直接名前ボックスに入力しても構いません) そして、Sheet3のA2~A3セルを範囲指定 → 「ああ」と名前定義 B2~B3を範囲指定 → 「いい」と名前定義・・・ と最後まで名前定義していきます。 これで準備は出来ました。 Sheet1のA列を範囲指定 → データ → 入力規則 → リストを選択 数式欄に =メーカー としてOK これでA列はメーカーがリスト表示されます。 B列を範囲指定 → 同様にリストから数式欄に =INDIRECT(A2) とします。 これでA列で選択したメーカーが扱っている商品名だけがB列にリスト表示されます。 最後に価格のC2セルに =IF(COUNTBLANK(A2:B2)>0,"",INDEX(Sheet2!$C$2:$C$2000,MATCH(A2&B2,Sheet2!$E$2:$E$2000,0))) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 以上、大変長々と書きましたが 参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m

関連するQ&A

  • エクセルのドロップダウンリスト

    エクセルのドロップダウンリストについて、困っていることがあります。 たとえば、 ・Aシート A列|B列|C列 1|ペン|200 2|鉛筆|100 3|本|200 ・Bシート A列|B列 ペン(ドロップダウンリスト)|200 という風に、Bシートのドロップダウンリストを選択すると、動的に200と隣のセル(B列)に表示するようにするにはどのようにすればいいでしょうか? よろしくお願いします。

  • ドロップダウンリストの連動

    いつも大変お世話になっております。 エクセルで、セルO6にA社とB社を名前の定義で登録しドロップダウンリストで選択できるようにしました。 セルD14に、セルO6でA社を選択した場合には、A5052(H)とA5052(R)がドロップダウンリストで選択でき、同じく、セル14に、セルO6でB社を選択した場合には、アルハイスとアルジェイドがドロップダウンリストで選択できるようにしたいです。 こちらで拝見したり、ネットで調べたのですが、列が同じの場合はやれそうでしたが、同列以外ではできませんでしょうか? (INDIRECTや、ドロップダウンリストを使用してやったりできるのでしょうか) 説明が上手く出来ず申し訳ありません。 ご教授して頂けたらありがたいです。 よろしくお願いします。

  • エクセルのドロップダウンリスト

    ゲームのデータベース的な物を作っていて、シート2に一覧表みたいなのを作り、シート1のA列(アイテム名)のドロップダウンリストで項目を選択するとB列(能力値)、C列(値段)、D列(売ってる場所)等の数値や文字まで出せる方法は無いでしょうか? エクセル初心者でわからないことだらけですがわかる方いましたら御教授お願いします。

  • エクセルでのドロップダウンリスト作成について

    エクセルで、3つの項目(A,B,Cとします)をドロップダウンリストから選択する場合、A,B,Cを『名前の定義』で関連付けることはできました。しかし、A,B,Cが同じ文字列の場合、同シート上で同じ名前の定義にできないため、ドロップダウンリストが作成できずにいます。 このようなドロップダウンリストを作成するにはどのようにすれば良いか教えてください。 VBAなどが必要になるのでしょうか? 宜しくお願いします。

  • EXCELのドロップダウンリスト

    EXCELで困っています。以下の例です。 Sheet1にリスト表を作成し、Sheet2の表に入力します。 社名及び製品名を名前の定義でドロップダウンできるようにします。 A列に   社名:  A社・B社・C社・・・・ B列に  製品名: ねじ・ナット・スプリング・・・・・ C列に  製品番号: GH1・HK2・KS4・・・・・・ 尚、製品名および製品番号は社名により内容が異なります。 Sheet2の表の入力でB列の社名クリックで社名がドロップダウン選択でき、C列の製品名クリックで製品名がドロップダウン選択できます。 D列で製品名に準じた製品番号を自動で入力できるように VLOOKUPを用いて表示できたのですが、 問題は製品名は同じですが製品番号が違う時、同一の製品名の どれを選択しても同一製品名の中の最上位の製品番号しか 選択されません。 どうぞこの問題の解消していただける方のご回答をお願いします。

  • エクセル セルを結合させてドロップダウンリストを作りたい

    Office2003を使用しています。 エクセルで、結合させたセルの列を一つの列とみなしてドロップダウンリストを作成したいのですがうまくできません。 言葉が足りずにわかりにくいかもしれませんが、例えば1行目のA列とB列、2行目のA列とB列、3行目のA列とB列・・というようにセルを結合させていき、その列にドロップダウンリストを作成したいのです。 結合させた後に範囲を指定してドロップダウンリストを作成しようとすると、A列とB列の2列にドロップダウンリストを作成するように出来上がってしまいます。 何か方法はありますでしょうか? 宜しくお願いします。

  • ドロップダウンリストの連動した使い方

    ドロップダウンリスト同士を連動させたいのですが、例えば、カラムA,B,Cにそれぞれドロップダウンリストを作成しておき、カラムAでドロップダウンリストより任意の値を選ぶと、自動的にカラムB,Cも同じ位置の値がセットされるようにしたいのです。同じ位置の意味は、A,B,Cのドロップダウンリストの値を仮に10個設定しておいたら、カラムAで上から3番目を選んだらカラムB,Cでも上から3番目が選ばれセットされるようにしたいのです。 よろしくお願いします。

  • エクセルのドロップダウンリストについて(再)

    ドロップダウンリストで、参照先のリストは、単一の行、もしくは列でないといけないともいますが、たとえば、A1列にあらかじめ設定されたドロップダウンリストを表示(※ドロップダウンリストの右隣の▼ボタンを押したときに表示される内容です。)させたときに、A0001などのリストの隣、もしくは下にそれに対応する商品名を表示させるにはどうしたらいいのでしょうか? 先程やっていたら偶然にできたのですが、しばらくしたら更新されやり方が分からなくなりました。

  • ドロップダウンリストの連動について

    Excel2007での質問です。 例えば、B1セルに、1を入れると”肉食動物”、2で”草食動物”と出る ようにA1セルに、=IF(B1=1,"肉食動物",IF(B1=2,"草食動物",IF(B1="","",""))) と数式を作っておき、このとき、A2セルに、肉食選択時はライオン、チーター・・ また、同様に草食選択時の場合はA2セルに、キリン、シマウマ・・などのドロップダウンリストを場合分けで連動させたい、つまり同一セルでドロップダウンリストを自動で使い分けたい場合、どのようにすればよいでしょうか。

  • エクセルのドロップダウンリスト

    入力規則のドロップダウンリストですが、次のような使い方は可能でしょうか?また可能なら方法を教えて頂けませんか?よろしくお願いします。 A、B列にドロップダウンリストを設定し、A列のリストに値を複数設定し、B列のリストの値をA列の値によって変化させたいのですが・・・。各列とも、複数行にわたってドロップダウンリストを設定しています。

専門家に質問してみよう