プロが教える店舗&オフィスのセキュリティ対策術

ネットショップで、カテゴリを選ぶと、商品一覧が出てくる、
みたいなことを実現したいと思っています。

エクセルで、2つのデータを持っています。

ひとつはカテゴリリスト。
カテゴリに対して、ID NOが振ってあります。

色別
┗赤 101
┗青 102
┗黒 103
対象別
┗メンズ 201
┗レディース 202
┗キッズ 203
状態別
┗新着 301
┗SALE 302
┗予約品 303

もうひとつは、その商品が該当するカテゴリIDを示している商品リスト。

縦軸:商品名
横軸:カテゴリID
で、
その商品が該当するカテゴリ列に「1」を立ててあるもの。


この商品リストを投げ込んで(読み込んで)
カテゴリを(プルダウンなどで)選択した時に、
そのカテゴリに該当する商品一覧を表示できるような、エクセルの仕組みがほしいです。

作りたいエクセル表のイメージを画像で添付します。


どなたか、おしえてください。よろしくお願いします!

「Excelのデータを元に検索結果を表示し」の質問画像

A 回答 (3件)

したいことだけ書いて回答者にどうせよというのか。


相当予備智識が要るのにどれだけ勉強したのか。
VBAは出来るのか。
ウィンドウズの専門家が作ったソフトを見慣れていて、目が肥えているのだろうが、自分でも直ぐできると思っているらしい質問者が多いが難しい課題だ。
とりあえず、WEBページとの絡みはあきらめてください。
ーー
商品リストを投げ込んで
こういうのも手操作でやる。
ーー
本件がエクセルと関連しそうなのは、入力規則の「リスト」でしょう。
他シートのデータを参照
入力規則のことも1言も出てこない質問。エクセルの勉強不足。
Googleで「入力規則 リスト 他シート」で照会すると記事があるように、他シートでさえ参照は工夫が要る。
他ブックのデータを参照
http://plaza.rakuten.co.jp/pasodairy/diary/20050 …
ーー
自由にやるにはアクセスやエクセルVBAでリストボックスを扱う課題。
アイテム数が多いと、分類カテゴリなどで表示を絞らないとならなくなるが、アクセスやVBAプログラムなどを使わない場合は
高等な課題。
    • good
    • 0
この回答へのお礼

imogasiさん、早速ご回答ありがとうございます!

確かにお願いしたい内容が分かりづらかったですね、、、汗
説明不足ですみませんでした。

アクセスやVBAでリストボックスを扱う高等な課題ですか。。。
やはりですね。。。
アクセスっぽいなぁとまでは思ったのですが、残念ながらVBAもアクセスも全くわからず、時間もないため、エクセルでなんとかできないかと思った次第です。

教えていただいたリストボックスは大昔に使ったことがありました。
これを活用すればよいのですね。
でも結構色々組み合わせないとですね。

カテゴリ名を表示するリストボックスと、カテゴリ名とカテゴリIDをひもづけるものと、IDを参照して該当する商品名を表示させるVlookup??if関数??

うーん、、やはり商品リストの中身は、いじらないと厳しそうですね。

考えます。

お忙しいところご回答、本当にありがとうございました。

お礼日時:2011/07/07 17:13

シート1にはカテゴリごとのIDがあるとします。


A2セルには赤、A3セルには青、A4セルには黒、A5セルにはメンズ、A6セルにはレディーズ、A7セルにはキッズ、A8セルには新着、A9セルにはSALE、A10セルには予約品と文字が入力されており、それぞれのIDがB列に入力されているとします。
シート2にはA2セルから下方に商品名が、またB1セルから横の列方向にはシート1で入力してあるIDが並んでいるとします。
そこでシート2では作業列として例えばM2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(Sheet3!A$4<>"",IF(AND(INDEX(A:L,ROW(),MATCH(VLOOKUP(Sheet3!A$2,Sheet1!A:B,2,FALSE),$1:$1,0))=1,INDEX(A:L,ROW(),MATCH(VLOOKUP(Sheet3!A$3,Sheet1!A:B,2,FALSE),$1:$1,0))=1,INDEX(A:L,ROW(),MATCH(VLOOKUP(Sheet3!A$4,Sheet1!A:B,2,FALSE),$1:$1,0))=1),MAX(M$1:M1)+1,""),IF(Sheet3!A$3<>"",IF(AND(INDEX(A:L,ROW(),MATCH(VLOOKUP(Sheet3!A$2,Sheet1!A:B,2,FALSE),$1:$1,0))=1,INDEX(A:L,ROW(),MATCH(VLOOKUP(Sheet3!A$3,Sheet1!A:B,2,FALSE),$1:$1,0))=1),MAX(M$1:M1)+1,""),IF(Sheet3!A$2<>"",IF(INDEX(A:L,ROW(),MATCH(VLOOKUP(Sheet3!A$2,Sheet1!A:B,2,FALSE),$1:$1,0))=1,MAX(M$1:M1)+1,""),"")))

この式はシート3のA1セルには選択カテゴリの文字がありA2セルから必要によってはA4セルまでにシート1のA列に記したカテゴリ名を入力することを前提にしています。例えばA2セルにSALEと文字を入力します。このほかにSALEのうちでも赤の商品を表示させるのでしたらA3セルに赤と入力します。
該当の商品名をシート3のB2セルから下方に表示させるとしたらB2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(ROW(A1)>MAX(Sheet2!M:M),"",INDEX(Sheet2!A:A,MATCH(ROW(A1),Sheet2!M:M,0)))

これでシート3のA2セルからA4セルまでの間に連続した状態(空白セルが途中のセルに無い状態)で選択カテゴリを入力することでB列には該当の商品名が表示されます。
    • good
    • 0

オートフィルターでできませんか?


別の場所にリストアップさせるたり、複雑な条件の場合だったりしたらフィルタオプションの設定(+マクロ)
    • good
    • 0
この回答へのお礼

CoalTarさん
ご回答ありがとうございます!

オートフィルタ、そうなんですよね。

問題は、商品によって、同じジャンルでも複数のカテゴリに該当していることがあり、また1カテゴリごとに1セル使っているので、

たとえば
 商品1 203|
 商品2 201|203

のように、同じIDでも、違う列に入ってしまっているのが問題でした。

カンマ区切りなどで結合してひとつのセルにし、オートフィルタを利用するのがよいかもしれないですね。

データ量が多いので、できるだけ元データのままで行けないか?と思ったのですが、カンマ区切りにするだけならば、そんなに時間はかからないので、変に元データのままで無理するより、時短かもしれませんね。

試してみたいと思います。

+マクロ。。。
使ったことは一度しかないのですが、動作の記憶、ですものね。
これもこの機会に勉強したいと思います。

お忙しいところご回答、本当にありがとうございました。

お礼日時:2011/07/07 17:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!