[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『箱に何個入るか計算したい』(梱包屋)
はじめまして 友人からエクセルの達人がこのサイトにいると聞き助けていただきたくて質問します 今、会社で色々な大きさのダンボールの箱に商品をつめる仕事をしています 困っていることは、効率よくダンボールに箱をつめたいのですが ダンボールは10種類の大きさがあり、商品は数十種類の大きさの箱があります どの箱にたくさん商品が入るかや、100個の商品を入れるのにダンボールの箱が 何箱いるかなどがある程度分からないものか?という事で困っています 商品はすべて長方形の形をしており横向けたりしない状態で箱につめています エクセルで何とかなる問題かどうかを含めて何か良い知恵がありましたら教えてください よろしくお願いします [エクセルのバージョン] Excel2003 [OSのバージョン] WindowsXP
これかな? http://kaz.cyteen.nagoya-bunri.ac.jp/ai/repo3.html 外してるかも。 (MARBIN)
>100個の商品を入れるのにダンボールの箱が何箱いるか に関しては、これを計算するときに二つの箱の大きさが 決まっているのなら、求められそうに思います。 [A] [B] [C] [D] [E] [1] 縦 横 高さ 個数 [2] 中 15 20 13 100 [3] 外 40 50 35 [4] [5] 中/外 12 個 [6] 個数 9 個 [7] 最大 108 個
B2:D2に商品の箱の大きさと、E2に入れる個数 B3:D3に段ボールの大きさを入力します。 B5に =INT((B3*C3)/(B2*C2))*INT(D3/D2) これは、一つの段ボールに入る商品の数です。 B6に =ROUNDUP(E2/B5,0) こちらが、必要な段ボールの数です。 B7に =B5*B6 これは、B6個の段ボールに入る商品の個数です。
B5やB7の結果を見ながら 段ボールの大きさの調整や 入れる個数の調整をする事にすれば 何かに使えるかもしれません。
(HANA)
[A] [B] [C] [D] [E] [1] 縦 横 高さ 個数 [2] 中 15 20 13 100 [3] 外 38 48 35 [4] [5] 中/外 12 個 =INT((B3*C3)/(B2*C2))*INT(D3/D2) ^^^^^^^^^^^^^^^^^^^^ の部分 int(1824/300) =6だけど 6個はいらないよね。 JJJJ 単純な計算方法では効率よくはいかないと思いますが
そうですね。 体積でならすのが駄目なら、面積も駄目ですよね。 一応B5は =IF(AND(INT(B3/B2)*C2<=C3,INT(C3/B2)*C2<=B3),MAX(INT(B3/B2),INT(C3/B2)), INT(B3/B2)*INT(B3/B2)*C2<=C3+INT(C3/B2)*INT(C3/B2)*C2<=B3)*INT(D3/D2)
の様な式に変更ですがJJJJさんご指摘の通り単純な計算しか行っていません。 「効率よく箱に収めた場合」の数ではなく 「同じ向きに入るだけ並べた場合」の数になっています。
(HANA)
こんにちは、だるまです。 http://hp.vector.co.jp/authors/VA033788/index.html
ソルバーを使ってみてはいかがでしょうか。^d^
私は今まで特に機会がなかったので使ったことが無かったのですが、試しにと今回簡単な例で使って みました。
とりあえず長さだけを対象にして、長さAとBの既製品の箱に、長さX,Y,Zの商品を各々合計でa,b,c入 れるとして、どの箱を何個使い、それぞれどの商品を何個入れることにすれば一番効率が良い(残り のスペースの合計が最小になるか)というのをやってみました。
結果、思ったより簡単に答えが出てきて、結構感動的でした。一度検討してみてはいかがでしょうか。
面積から考慮すると 大の箱縦=A 1000mm 小の箱縦=X個 220mm 小の箱横=Y個 185mm 1000≒220X+185Y でどれだけ隙間が無くせるか それに伴う大の箱横の隙間がいかほどになるかも考慮 なおかつ高さの問題 ゆえエクセルの問題ではなく数学の問題だと思いますよ。 それが出来たら それに対応してエクセルで数式(関数等使用)を導き出し仕事をさせる。 数学の問題をまず先に (JACK)
<結果、思ったより簡単に答えが出てきて、結構感動的でした> 2,3例 提示されては 向き等いろいろ考慮されての事とは思いますが
(JACK)
だるまです。 http://hp.vector.co.jp/authors/VA033788/index.html
>向き等いろいろ考慮されての事とは思いますが いいえ、書いたとおり長さ(一次元)だけです。箱と書きましたが、結果的に試してみたのは既製 の長さの材木から、ある長さの材木に切り分けるのに効率の良い切り方は、という感じの例です。
この程度の内容なら関数の達人の皆さんなら簡単に書けるのかもしれませんが、私には難しい問題 です。 で、ソルバーで試してみたら思いの外簡単に出来たのでそう書きました。
ソルバーで完全に解決出来るかどうかは私にも分かりません。だから「検討してみては」と書き ました。
どうも、皆さんの書き込みを見ているとソルバーでもそう簡単にできるようなことではなさそう ですね。 失礼しました。
梱包屋です 数日で皆様にこんなに教えていただき感激です!!
(?)さま、ご指摘ありがとうございます 数学の問題ということは何らかの計算方式をまず考える必要が有るということですね!
(MARBIN)さま、ナップサック問題ありがとうございます。 私には敷居が高そうです(変なコードとか表示されていましたVBというやつみたいですね)
(HANA)さま、分かりやすい数式の提示ありがとうございます 一定方向の向きで入れた場合は出来ることがわかりました (JJJJ)さまもありがとうございます
(だるま)さま、お返事ありがとうございます ソルバーとはなんでしょうか?(無知ですいません) よろしければ教えてください
(JACK)さま、お返事ありがとうございます。
皆様のお返事を参考にもう少し考えてみます なんか法則を見つけて解決の糸口を探してみます
(よく考えたらダンボールは10種類しかないのであらかじめ固定で計算式の ガワとか作ってみたら近づけるかもしれません)
みなさま、ありがとうございました
>ソルバーとはなんでしょうか? の御質問へのレスを待って居られるといけませんので だるまさんではないですが・・・・。
実は私も良く分かっていないので、勝手にそう思っているのですが 条件を指定したら、その条件に合うような解を 総当たりでテストし見つけてくれるツールだと思っています。
おっと、いるかさんに聞いたらちゃんと教えてくれました。 以下いるかさん(エクセルヘルプ)からの抜粋ですが・・・ −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ソルバーとは、最適化分析 (セルの値を変更し、その変更が数式の計算結果に与える影響を調べる分析方法。) と呼ばれることもあるコマンド セットの要素の 1 つです。 ソルバーを使えば、ワークシートの目的セルと呼ばれるセルに入力されている数式の 最適値を求めることができます。 ソルバーでは、変化させるセルと呼ばれるセルの値を変化させつつ、 目的セルの数式の計算を行い、最適の解を見つけ出します。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− なお、ソルバーを使うためには メニュー・ツール(T)→アドイン(I) ■ソルバーアドイン にチェックが入っている必要があります。
簡単な例を挙げておきます。 りんご(50g/個)・みかん(30g/個)・れもん(20g/個)を いくつかずつ選び1,000kgに成るように箱に詰めようと思った場合 それぞれを何個ずつ入れれば良いか求めたい。 ただし、各種5個以上に成るように選定する。
と有った場合、それぞれ数を調整しながら(合計数字を見ながら) 1,000kgに成るように求める必要がありますが この様な時にソルバーが使えます。 [A] [B] [C] [D] [1] 重さ 個数 重量 [2] りんご 50 0 ←=B2*C2 [3] みかん 30 0 ←=B3*C3 [4] れもん 20 0 ←=B4*C4 [5] 0 ←=SUM(D2:D4) B列に一つ分の重さを入力 D列の各セルには、右側に書いてある式が入っています。 メニュー・ツール(T)→ソルバー(V)を選択
目的セル(E) [ $D$5 ] ←総合計のセル 目標値: ○最大値(M) ○最小値(N) ●値(V): [ 1000 ] 目的のセルが、この値になるような物を求める↑ 変化させるセル(B) [ $C$2:$C$4 ]←求めたい値が入るセル 制約条件(U) [ 追加(A) ]ボタンを押して設定します。 $C$2:$C$4 = 整数 ←切り分けては入れないので $C$2:$C$4 >= 5 ←それぞれ最低5個以上は入れるので
それぞれ条件を入力し[ 実行(S) ]を押すと、 エクセルが勝手にC2:C4に色々な値を入れて 最適の解を求めてくれます。 [A] [B] [C] [D] [1] 重さ 個数 重量 [2] りんご 50 11 550 [3] みかん 30 9 270 [4] れもん 20 9 180 [5] 1,000 ↑ここに結果が入る
だるまさんが試された「長さ」や今回の様な「重さ」 だけなら使用できると思いますが 今回は、二方向の長さになるので ソルバーで求めるのは難しいように思います。
例えば、6×9 の段ボールがあり これに2×5の商品を入れようとした場合 同じ方向に入れることを考えると 【1】段ボールの短辺に、商品の長辺を揃える場合 4つ並べることが出来ます。 ┌─┬─┬─┬─┬┐ │1│2│3│4││ │ │ │ │ ││ │ │ │ │ ││ │ │ │ │ ││ ├─┴─┴─┴─┘│ └────────┘ 【2】段ボールの短辺に、商品の短辺を揃える場合 3つしか並びません。 ┌───┬────┐ │ │1 │ │ ├────┤ │ │2 │ │ ├────┤ │ │3 │ └───┴────┘ ただし、空いている左側の部分に 縦方向にも入れると、更に2つ入り この箱には最大5個入れられることになります。 ┌─┬─┬────┐ │1│2│3 │ │ │ ├────┤ │ │ │4 │ │ │ ├────┤ ├─┴─┤5 │ └───┴────┘
この部分が、この手の算出が難しい理由だと思います。 「こうやったらもっと入るな」ってのは、経験から分かりますよね。 でも、パソコンは経験値を持っていませんからね・・・ 誰かがその経験を、経験で無くする (事務的な処理で求められるようにする)必要があります。
ちなみに、訂正で載せた式は「0」になりますね。 単純計算でやるなら =MAX(INT(B3/B2)*INT(C3/C2),INT(B3/C2)*INT(C3/B2))*INT(D3/D2) で良かったのかもしれない。 1と2の状態を計算して、たくさんはいる方を採用します。
もしも上のサンプルと同じ箱の大きさだった場合「4」になりますので 一つの箱に5段入る場合は、20個入る計算になりますが 実際は5個入るので、25個入ることになります。 実用的では無いので、この式に関してはこの辺で。
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.