• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelのデータを元に検索結果を表示したい(2))

Excelを使用してカテゴリに基づいて商品一覧を表示する方法

このQ&Aのポイント
  • Excelを使用して、カテゴリに基づいて商品一覧を表示する方法について教えてください。
  • ネットショップで、カテゴリを選ぶと、商品一覧が表示される仕組みをExcelで実現したいです。
  • エクセルのデータを元に、選択したカテゴリに該当する商品一覧を表示する方法を教えてください。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

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

choco8pan8honey
質問者

お礼

imogasiさん、早速ご回答ありがとうございます! 確かにお願いしたい内容が分かりづらかったですね、、、汗 説明不足ですみませんでした。 アクセスやVBAでリストボックスを扱う高等な課題ですか。。。 やはりですね。。。 アクセスっぽいなぁとまでは思ったのですが、残念ながらVBAもアクセスも全くわからず、時間もないため、エクセルでなんとかできないかと思った次第です。 教えていただいたリストボックスは大昔に使ったことがありました。 これを活用すればよいのですね。 でも結構色々組み合わせないとですね。 カテゴリ名を表示するリストボックスと、カテゴリ名とカテゴリIDをひもづけるものと、IDを参照して該当する商品名を表示させるVlookup??if関数?? うーん、、やはり商品リストの中身は、いじらないと厳しそうですね。 考えます。 お忙しいところご回答、本当にありがとうございました。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

シート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列には該当の商品名が表示されます。

回答No.1

オートフィルターでできませんか? 別の場所にリストアップさせるたり、複雑な条件の場合だったりしたらフィルタオプションの設定(+マクロ)

choco8pan8honey
質問者

お礼

CoalTarさん ご回答ありがとうございます! オートフィルタ、そうなんですよね。 問題は、商品によって、同じジャンルでも複数のカテゴリに該当していることがあり、また1カテゴリごとに1セル使っているので、 たとえば  商品1 203|  商品2 201|203 のように、同じIDでも、違う列に入ってしまっているのが問題でした。 カンマ区切りなどで結合してひとつのセルにし、オートフィルタを利用するのがよいかもしれないですね。 データ量が多いので、できるだけ元データのままで行けないか?と思ったのですが、カンマ区切りにするだけならば、そんなに時間はかからないので、変に元データのままで無理するより、時短かもしれませんね。 試してみたいと思います。 +マクロ。。。 使ったことは一度しかないのですが、動作の記憶、ですものね。 これもこの機会に勉強したいと思います。 お忙しいところご回答、本当にありがとうございました。

専門家に質問してみよう