こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel2003での入力規則の質問です。

Excel2003での入力規則に関して質問です。

Sheet1のA列には食材の種類、B列には具体的な食材の名前が書かれています。

  A    B
1野菜  にんじん
2野菜  玉ねぎ
3野菜  じゃがいも
4肉   牛
5肉   鳥
6肉   豚
7魚   鯖
8魚   イワシ
9魚   鮭
10果物 バナナ
11果物 みかん
12果物 林檎
(※実際には食材の種類も食材の名前ももっと多いです)

この表とは別のシート(Sheet2)でこの表を参照します。
具体的にはSheet2のA1とA2の2つのセルに食材の種類を記入します。
そしてA3セルで入力規則によるドロップダウンリストを表示したいのです。

例えば、Sheet2のA1に「野菜」、A2に「肉」と記入します(「」は実際には記入しません)。
その後、A3のセルのドロップダウンリストを表示させると、「にんじん」「玉ねぎ」「じゃがいも」「牛」「鳥」「豚」の6項目が自動で入っているようにしたいのですが、これは可能なのでしょうか?

また、これを応用し、Sheet2のA3のドロップダウンリストに表示されるものが
・A1に記入された食材の種類に対応した名前。
・A2に記入された食材の種類に対応した名前。
・A1とA2に記入された名前に関わらず食材の種類「果物」に対応した食材の名前。
の3項目を表示させることは可能なのでしょうか?

いずれの場合でも、Sheet2のA1とA2に同じ食材の種類が記入された時(例えば、A1に「肉」、A2に「肉」)は、ドロップダウンリストは自動的に「牛」「鳥」「豚」の3項目になるようにリスト項目をダブらせないように設定するようにしたいです。

こんなことが可能なのか分かりませんが、よろしくお願いします。

投稿日時 - 2014-01-10 20:10:42

QNo.8423761

困ってます

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

こんばんは!

表のレイアウトを変えればもっと簡単だとおもいますが、
それは無理だという前提で、
お使いのバージョンがExcel2003だというコトですので・・・

↓の画像のようにSheet1に作業用の列を2列設けます。
そしてD1セルに
=IF(COUNTIF(Sheet2!A$1:A$2,A1),ROW(),"")
E1セルに
=IF(COUNT(D:D)<ROW(A1),"",INDEX(B:B,SMALL(D:D,ROW(A1))))
という数式を入れ、両セルともしっかり下へオートフィルでコピーしておきます。

次にE1~E列の適当なセル(データが表示されるであろう行数)を範囲指定 → 名前ボックス(画面左上のセル番地が表示されているところ)に
仮に
範囲
と入力し、Enter
これでE列の範囲指定した部分が「範囲」と名前定義されましたので、
Sheet2のA3セルを選択 → データ → 入力規則 → リスト → 元の値の欄に
=範囲
としてOK

これでSheet2のA1・A2セルにデータを入力するとA3セルにそのリストが表示されます。

※ 注意点 ※
Sheet1のE列の範囲が広すぎるとリストには空白が表示され、スクロールバーを上に動かす必要があります。

Excel2010以降であれば、数式でこの範囲を指定できますが、
できないコトは無理なので、この程度で頑張ってみてください。m(_ _)m

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2014-01-10 20:54:00

お礼

ありがとうございます!
無事、完成いたしました。
画像付きの丁寧な解説で助かりました!!

投稿日時 - 2014-01-11 23:41:23

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

まず、ドロップダウンリストに表示されるものの一覧表データ一式にそれぞれ名前を付けます。
たとえば、にんじん、玉ねぎ、じゃがいも、の一覧表データには 野菜 という名前を付けておきます。
この名前で、A3をデータの入力規則でドロップダウンリストを呼び出して =野菜 にします。

投稿日時 - 2014-01-10 20:51:46

ANo.1

あんまり馬鹿みたいに複雑な事をしようとしないで、次のように丁寧に準備していけば簡単に出来ます。

作成例:
シート1のC1に
=IF(OR(A1="果物",COUNTIF(Sheet2!A$1:A$2,A1)),ROW(),"")
と記入、リストの下端までコピー貼り付け

シート1のD1に
=IF(ROW()>COUNT(C:C),"",INDEX(B:B,SMALL(C:C,ROW())))
と記入、リストの下端までコピー貼り付け


シート2のA3の入力規則では、
 種類 リスト
 元の値 =INDIRECT("Sheet1!D1:D"&COUNT(INDIRECT("Sheet1!C:C")))
と設定してOK。

投稿日時 - 2014-01-10 20:49:56

あなたにオススメの質問