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