『元帳へ単価表からデーターを自動的に出てくるようにしたい』(カルメロ)   A1 B1  C1    D1   E1 F1 G1 H1 I1 s付 分類 品名 数量(s)単価 金額 担当 得意先   と列に分けて毎日の売り上げを入力しています。 分類では 化粧品 研磨剤 水性など45種類に分類しています。   品名は たとえば化粧品では コスメA コスメパック コスメサーブ コスメK22 コスメVI などあり 多いもので一つの分類の中で品名が20種類ほど扱っています。 単価は固定ではなく、数量で変動していて〜29k迄は+150増し 30〜59k迄は+60 増しで 品名が試作品、クリア、EXで始るものと得意先A社D社O社H社(4つ)については割増はしないで単価はそのままの金額となります。   単価一覧表は 分類 得意先 品名 単価 担当 化粧品 A社 コスメサーブ 250 佐藤 試作品  B社   絵の具 200   小西などこのような形式で作成しています   元帳に入力するときに分類を選ぶと品名が候補で選択できて簡単に入力できるようにしたいのと単価が数量によってと品名の3種類についてはそのままの金額で また得意先4つに対してもそのままの金額で 数量によって割増金額になって金額が表示されるようにしたいのですが どのようにしたら良いのでしょうか? 難しいのでしょうか? どうぞよろしくお願いします ---- こんばんは。 まず整理しましょう。。。 1表は元帳と単価表の二つがある。 2分類が45種類、1種類につき20品目ある 3分類を選択すると品目が絞り込まれ選択できるようにしたい 4品目から検索して、単価表からデータを参照したい 5数量によって変わる割増料金を自動的に加算させたい 6しかし、A,D,O,H社については加算料金を取りたくない でいいのですかね? 4については、vlookup関数がよいと思います。 提示していただいた表の場合、単価の列に =IF(D2="","",IF(or(I2="A社",I2="D社",I2="O社",I2="H社"),vlookup(単価表!C2,$C$2:$D$65535,2,0),IF(vlookup(30<=E2<60,vlookup(単価表!C2,$C$2:$D$65535,2,0)+60,IF(E2<30,vlookup(単価表!C2,$C$2:$D$65535,2,0)+150,vlookup(単価表!C2,$C$2:$D$65535,2,0))))) で対応できると思います…。間違っていたらすみません。 3については他の方の回答をお待ちください。 (ちらみ) ---- あ、ごめんなさい勘違いしてました。 上のは無視してください。邪魔なら消しますが、がんばって書いたので自分だと消しにくいので誰かお願いします。 たぶん、単価が割り増しされるんじゃ文字通り割に合わないでしょうから、全数に割り増し料金がかかると途中で気がつきました。 一つ教えていただけますか。 その単価は全部同じ量での単価なのでしょうか。 それとも、品物によってまるめ数が違うのでしょうか。 (ちらみ) ---- まずは、条件によって変動する単価の部分を考えずに、 A.「分類を選ぶと品名が候補で選択できて簡単に入力」 B.「単価一覧表」の内容を「元帳」に参照する仕組み をまず作成されてはいかがでしょう。   A.「分類を選ぶと品名が候補で選択できて簡単に入力」   1.リスト作成     分類と品名のリストを作成します。新規シートを挿入し、一行目に     A1に「化粧品」B1に「研磨剤」C1に「水性」・・・と1セル1種類の分類項目を入力していきます。     続いて、各分類ごとの品名を2行目以下に入力していきます。     A2「コスメA」A3「コスメパック」・・・・   2.名前定義     作成したリストで名前定義します。     イ)1行目の分類を入力した範囲を選択して「挿入>名前>定義」で「分類」とします。     ロ)作成したリスト範囲を全て選択して、「挿入>名前>作成」で、「上端行」のみ       チェックしてOKとします。   3.入力規則の設定     次の手順で入力規則を設定します。     分類をリスト選択するセル(仮にC2セルとします)を選択して、「データ>入力規則」     入力値の種類を「リスト」、元の値を「=INDIRECT("分類")」とします。     品名をリスト選択するセル(仮にD2セルとします)を選択して、「データ>入力規則」     入力値の種類を「リスト」、元の値を「=INDIRECT($C2)」とします。     「元の値はエラーと判断されます」と注意されますが、無視してOkとします。    以上で、C2セルで選択した分類に基づいた品名がD2で選択できるようになります。   Bについては次のことを確認しなければなりません。 「単価一覧表」で「品名」に重複はありますか? (みやほりん)(-_∂)b 「単価一覧表」で「品名」に重複はないのですが 似通った品名が以下のようにたくさんあります。 お手数掛けますがよろしくお願いいたします EX96グリーン T-08 EX96ブルー T-10 EX96ホワイトT-01 EX96エロー T-03 EX96ブラウン T-05 EX96グレー S-10A EX96グレー S-27A EX96グレー S-26A EX96グレー S-23A EX96グレー S-31A (カルメロ) ---------------------------------------------------------------------------- 単価はキロ単位あたりの単価となっています。 お世話になります (カルメロ) ---- 重複がないのであれば、元帳に以下の式をいれてください。 セルF2 =vlookup(D2,単価表!$C$2:$D$65536,2,0) セルG2 =if(E2="","",if(or(I2="A社",I2="D社",I2="O社",I2="H社"),E2*D2,if(E2>30,E2*D2+150,if(30<=E2<60,E2*D2+60,E2*D2)))) それぞれのセルに入力したら、フィルダウンで式を元帳の最後までコピーしてください。 リストの生成はみやほりんさんが完璧な回答をなさっているのでそちらを参考になさってください。 --------------------------------------------------------------------------- ありがとうございます。 リストの生成で >入力値の種類を「リスト」、元の値を「=INDIRECT("分類")」とします。 >品名をリスト選択するセル(仮にD2セルとします)を選択して、「データ>入力規則」 ここまではできたのですが次に >入力値の種類を「リスト」、元の値を「=INDIRECT($C2)」とします。 >「元の値はエラーと判断されます」と注意されますが、無視してOkとします。 >以上で、C2セルで選択した分類に基づいた品名がD2で選択できるようになります。 ここの部分ですが、分類でリストから選択したら品名が分類と品名リストのシートの 3行目に入力しているものしか表示されなくて他の品名が選択出来ませんでした。 セルF2 =vlookup(D2,単価表!$C$2:$D$65536,2,0) に入力したのですが、#N/Aのエラー表示となります。 品名(セルD2)には=INDIRECT($C2)の関数が入力されています。 何か間違っているのでしょうか? どうぞ宜しくお願いします (カリメロ) ---- 読みにくいので勝手に整形しました。 後でもいいので新規作成の整形ルールを読んでおいてください。 以下を確認してください。 1単価表があるシート名が「単価表である」こと 2単価表が入力されているセルが以下であること   3品名が記入されているセルがC列   4単価が記入されているセルがD列 5元帳の品名が入力されている列がD列であること あと式を一部訂正します。 =if(D2="",""vlookup(D2,単価表!$C$2:$D$65536,2,0)) 自分で式を理解する気がないのでしたら、100%同じ表をWikiで整形してください。 上記の質問では想像で参考になるような式を提示することしかできません。 また、理解する気があるのでしたら、こちらもわかるように説明いたしますので「vlookupとは何ですか」、など聞いてください。 (ちらみ) ---- >分類でリストから選択したら品名が分類と品名リストのシートの >3行目に入力しているものしか表示されなくて他の品名が選択出来ませんでした。   紹介した手順で連動する入力規則リストが出来ることは 確認しておりますので、落ち着いてもう一度最初から やってみてください。 (みやほりん)(-_∂)b ---- ちらみさんへ 確認しましたらシート名が単価一覧になっていましたしセル番号も違っていました。 初歩的なミスで本当に申し訳ございませんでした。 バッチリ出来て本当に感謝しておりまた感激しています。 みやほりんさんへ 落ち着いてもう一度最初からやり直しましたら入力規則リストのセル番号が間違っていました。 お陰様で仕事におお助かりです。本当に助かり有難うございました。 セルG2 =if(E2="","",if(or(I2="A社",I2="D社",I2="O社",I2="H社"),E2*D2,if(E2>30,E2*D2+150,if(30<=E2<60,E2*D2+60,E2*D2)))) この数式の件も上手くいきました。ありがとうございます。 あともうひとつお願いがあるのですが品名が試作品、クリアの部分はI2="A社"のA社をそれぞれ試作品とクリアに変えて付け足しして うまくいったのですが EXで始るものも割増料金にはならないので省きたいのですがそれはどのような数式を使えばいいのでしょうか? EX製品の中に EX96ホワイトT-01 EX96ブラウン T-05 EX96ブラック T-06 EX96グリーン T-08 EXー96ブルー T-10 EX96グリーン S-20A EX96グレー S-10Aなど22種類あります ---- or()の中に、,(カンマ)で区切って、(品名セル)D1="EX*"を追加したらどうでしょうか。 *(アスタリスク)はワイルドカードといって、全ての文字列をあらわします。 上記の場合、EXの後ろはなにが来てもいいよということです。 orは論理演算子で、,で区切ったそれぞれの式のどれか一つが当てはまればTURE そうじゃなければFALSEを返します。 具体的には、 IF(条件,TUREの時,FALSEの時)となるので、 IF(or(D1="EX*",I2="A社"),D1がEXで始まるか、I2がA社場合の処理,それ以外の場合の処理)となります。 (ちらみ)