• ベストアンサー

エクセル関数で解決できるでしょうか

たとえば、 150g20円と50g8円の真空パック食品があり、一回開封すると残りは捨てなければならないとします。 このとき、セルに 440gと入力すると、150gパック用セルに3、50gパック用セルに0 340gと入力すると、150gパック用セルに2、50gパック用セルに1 と表示させたいのです。 それに加え、上記の商品だけでなく別種の商品も同様に検索したい のです。自分では商品・梱包量・価格をデータベース形式にして 保存し、そこのデータを引用する形に仕上げたいのですが、 考えがまとまりません。 VBA以外で何か良い考えがあればお授けください。

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

  • ベストアンサー
  • nobu555
  • ベストアンサー率45% (158/345)
回答No.5

#2です。 申し訳ありません。式が不完全でした。 100gのとき、 150gパックが0、50gパックが2となり合計金額が16円ですが 本式では、1、0となり合計金額が20円となります。 #1の方の >50g単位で切り上げ で、もしやと思い検証したところ、式が不完全でした。 失礼しました。

san-nomaru
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

#03です >大袋が20円、小袋が15円などと金額が接近している場合は使えない場合があります。 は逆ですね。「大袋が20円、小袋が5円などと金額が離れる場合は(小袋に多く詰める方が安くなるので)使えない」が正解です なお#03の式では400gの時大袋2枚、小袋2枚になります(袋代56円)。これで期待にそいますか?

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

以下のような表で     A列  B列   C列 1行目     150    50 2行目 440    3    0 3行目 340    2    1 B2の式は  =IF(ROUNDUP(A2/B$1,0)*B$1-A2<C$1,ROUNDUP(A2/B$1,0),INT(A2/B$1)) C2の式は  =IF(B2*B$1-$A2>=0,0,ROUNDUP(($A2-B2*B$1)/C$1,0)) になります。必要な行数分だけ下方向にコピーしてください。 1行目の値は袋の容量です。商品に応じて他テーブルから検索してセットしても良いと思います ただしこの式は容量に着目して個数を計算しています。袋の値段を最低にするという式ではありません。ですから大袋が20円、小袋が15円などと金額が接近している場合は使えない場合があります。ご承知おきください。(その場合はシナリオ機能を利用するのが良いでしょう)

san-nomaru
質問者

補足

ありがとうございます。 できたら A1(商品名)  A2(大袋単位)  A3(小袋単位) 真空パック    150      50 とデータベース登録しておき、    [商品名]・[グラム] を入力するとデータベース検索をして、 [大袋単位][小袋単位]を表示させ、グラムに応じて個数決定、 というようにはならないでしょうか。 例 B1(商品名)B2(グラム)→B3(大単位)B4(数)B5(小単位)B6(個数) 真空パック  440   →  150    3    50   0

全文を見る
すると、全ての回答が全文表示されます。
  • nobu555
  • ベストアンサー率45% (158/345)
回答No.2

440gと入力するセルをA1として 150gパック用セルをB2として下記の式を入力 =ROUND(A1/150) 50gパック用セルをB3として下記の式を入力 =IF(A1>150*B2,ROUNDUP(MOD(A1,150)/50,0),0) で如何でしょうか?

san-nomaru
質問者

補足

ありがとうございます。 対象商品をあらかじめセットしておく場合にはシンプルでよいですね。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

150gと50gの組み合わせでは40gは不可能なので50g単位で切り上げということでしょうか? A1=440,A2=150,A3=50 として B2=INT(CEILING($A$1,$A$3)/A2) B3=INT(MOD(CEILING($A$1,$A$3),A2)/A3)

san-nomaru
質問者

お礼

ありがとうございました。

san-nomaru
質問者

補足

ありがとうございます。 150と50で一番安くなる組み合わせパターンを探したいのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル関数で教えて下さい

    本店で「りんご」を100円「みかん」を200円「いちご」を300円「バナナ」を400円で売っています。 支店は「りんご」を500円「みかん」を600円で売っていて「いちご」「バナナ」は売っていません。A1セルに本店か支店を入力、B1セルに商品を入力するとC1セルに値段が出るようにしたいのですが C1セルにどのような関数を使えばいいのでしょうか?

  • エクセルの関数を教えてください!!!

    エクセルの関数の質問です。 売上表を作りたいのですが たとえば「250円」の商品が何個売れたか入力する際 1のセルに「2個」と入力すると 2のセルに「500円」と自動的に反映される 関数を教えて頂きたいです。 また売上表を作るのに参考になる テンプレートやページなどありましたら 合わせて教えて頂きたいです。 宜しくお願い致します。

  • エクセルの関数を教えてください

    作りたい表は以下の通りです。 セルA1に「110」と入力してあります。 (110は110円で1ドルを円換算した数字です) セルB2には商品名 セルB3には商品名の価格(円) セルB4にはセルB3からA1を割ってドル換算した価格を自動でだしたいと思っています。 マクロは良くわかりません。 B4に入れる関数、もしくはマクロ以外でこうすれば簡単だよ。 などありますでしょうか? 関数初心者です。どうぞよろしくお願いいたします。

  • エクセルでの関数について

    お世話になります。 仕事で各商品の単価を比較するためのリスト作成を頼まれたのですが、条件が複雑なため、 関数で悩んでいます。画像を参考に、順を追って説明させて下さい。 1.まずリストに、各商品の単価を入力 2.入力された単価は作業列(1)~(3)に反映されます。このセルに入っている計算式は、   セルG6 =IF(C6="","",C6)   セルH6 =IF(D6="","",D6)   セルI6  =IF(E6="","",E6)   が入っています。 3.ここからが分からないところなのですが、採用単価に入る式で迷っています。条件は、  (1)A資料があれば、A資料が優先的に採用単価になる  (2)B資料とC資料の2つがあれば、平均の値(1円未満切捨て)が採用単価になる  (3)空白の欄には何も入れない  とのことです。 試しに(セルJ6の場合) =ROUNDDOWN(IF(G6="",AVERAGE(H6:I6),G6),0)  を入れてみましたら、(1)と(2)の条件はクリアしたように見えますが、空欄のある所はエラーの #DIV/0!が出てしまいました。 式自体が違うのか、それとも式に何か追加するのか分かりません。 分かりにくい説明かと思いますが、どうぞお知恵をお貸し下さい。宜しくお願いします。       

  • Excelシートが別になったときの合計を関数でだす

    シート1は商品とその単価を入力するデータ表、 シート2はシート1の合計表とします。 たとえばシート1にセルA1に1000円、セルA2に2000と入力したら、 シート2のセルA1に、商品AとBの計3000円が自動で入力されるようにできる関数がありましたら 教えてください。 Excel2019利用です。

  • エクセルのデータベース関数又はマクロを教えて

    エクセル関数、マクロ勉強中です。シート1の各列には顧客のランク値があります。その下各行にはランクに応じた商品群の価格を記入してあります。シート2、3、・・・は注文伝票で、それぞれ顧客ランク欄を設けています。ランク欄に顧客のランクを入力したとき、ランクに応じた商品群の価格を単価と表示したセル以下の行に表示したいです。データベース関数の組み合わせではどうすれば良いのか、又はマクロ設定で出来るのか、又はVBA記述で出来るのかVLOOKUP関数、オートフィルター等試してみましたが満足できる結果が出ませんでした。教えてください。

  • エクセルの関数を教えてください

    いつもお世話になっております。 商品価格の一覧表を作る際に原価を入力したら、 横のセルに条件にあった販売価格が出るように設定したいのですが 関数がよくわかりません。 1円~1000円までは1000円 1001円~3000円までは3000円 3001円以上は金額変更なし 詳しい方教えていただけますと助かります。 よろしくお願いいたします。

  • 関数をVBAで簡素化する

    よろしくお願いします シート枚数22枚 各シート セルG11からG71まで 各シートの各行にこの関数を入力するのは労を要します。 また、VBAに下のように1ツづつ入力するのも同じです。 Range("G11").Value="=IF(E11+F11=0,0,G10+E11-F11)"          ↓ Range("G71").Value="=IF(E71+F71=0,0,G70+E71-F71)" VBAで簡素化ができないでしょうか

  • Excelの関数に関してしつもんがあります

    A行に商品名、B行に金額、C行に%、D行に金額×%という表を作る際に セルA1に(商品1)と入力されていたら、セルC1に(60%)、A1が(商品1以外)ならセルC1に(40%)、そしてA1が商品1以外の中でも、B1が5000円以下ならC1は45%というように設定したい場合は、どういう式をつくれば宜しいでしょうか?

  • EXCELの関数や数式について

    お世話になります。 EXCELで以下の数式が作れなくて困ってます。 Sheet1(すでに作成されている)のA1セルの内容  マウス:590円 キーボード:1,500円 CPU:18,000円  マウス~CPUまでひとつのセルに入力されてます。 これを、Sheet2のセルAに”商品名” セルBに”価格の数字”が自動的に代入されるようにしたいと思ってます。 数字の桁は最高で8桁までです。 Sheet2    セルA    セルB   1  マウス     590   2  キーボード  1,500   3  CPU     18,000   よろしくお願いいたします。

このQ&Aのポイント
  • 針が折れました。どの針を購入したらいいですか?
  • ミシン針を交換する際のおすすめ商品とポイントを解説します
  • ミシン針交換の注意点と失敗しないための方法をご紹介します
回答を見る

専門家に質問してみよう