- ベストアンサー
目的セルを最小にする組み合わせの導き方
エクセルについて質問です。 やりたいことは、 ナップサック問題(だと思っている)です。 過去の質問と回答を見たのですが、 問題と解決手段とが合っているのかというところから 疑問に思っている状況です。 やりたいことを簡単に書きますと、 製品Dは、3つの部品A,B,Cから構成されていて、 製品Dの総コストが最小になるような、 部品の組み合わせを導き出したい。 ということです。 自分なりに考えたものを下に書きます。 A,B,Cの部品には、それぞれ何個かの候補があって、 エクセル上で部品リストとして登録します。 例えば、 部品Aリスト 品名 面積 コスト A-1 10 10 A-2 12 7 A-3 15 5 部品B,Cも同じように登録します。 製品Dの総コスト計算は、下のように出します。 品名 面積 コスト 部品A A-1 10 10 部品B B-1 12 8 部品C C-3 16 12 面積計 38 コスト計 30 総コスト 68 係数 1 品名の列は、入力規則をリストにして、 各部品リストの品名から選べるようにしています。 面積・コストはVLOOKUP関数で、品名に対応した値を 各部品リストから引っぱっています。 面積計・コスト計は、 それぞれをSUM関数で合計を出しています。 総コストは、 =(面積計*係数)+コスト計として計算しています。 係数は、製品ごとに見直しで、今は変化させません。 ここからが、ようやく本題です。 総コストを最小にする部品の組み合わせを出したい場合に、 ソルバー機能でできるのかなと考え、 目的セルに総コストを選んで、 変化させるセルに品名を選べば良いと思っていました。 ですが、実際にやってみてもエラーが発生しました。 ソルバーは、最適な<<数値>>を求めるものであって、 リスト(品名)を変化させるのは、機能的に違うのかと思っています。 このような問題を解決する場合、 ソルバー機能を使用するのは合っているのでしょうか。 もし合っているとしたら、 リストを変化させるには、どのようにすれば良いでしょうか? また、ソルバー機能にはこだわっていませんので、 別の方法で解決できるのであれば、教えていただければと思います。 説明が長くてすみません。 詳しい方、ご助言をよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
組み合わせなど考えずにA,B,Cそれぞれの総コスト最小の部品を選べばよいのではないでしょうか? 部品Aリスト 品名 面積 コスト 総コスト A-1 10 10 20 A-2 12 7 19 A-3 15 5 20 この場合はA-2を選ぶ。 A-1を選んだらB-1は選べない、などの制約があれば別ですが。
その他の回答 (2)
- n-jun
- ベストアンサー率33% (959/2873)
製品Dを構成する部品A、B、C、、、があり、それぞれに枝番があるなら、 総当たりで最小のコストが出るようにするとか? その場合に部品同士の相性・枝番同士の相性・部品&枝番での相性を 省いていくしかないのかな? 私見ですけど、個人で処理できるレベルのようには思えません。 業務であれば、会社に相談するべき事のように思います。
お礼
ご回答ありがとうございます。 自動で求められるかなと思ったのですが、 部品リストごとの総コストを出しておくのが 良い方法なのかも知れませんね。 身近にエクセルに詳しい人がいないので、 こういうことができるのかどうかも分からない状態でしたが、 難しいということがよく分かりました。
- n-jun
- ベストアンサー率33% (959/2873)
製品Dに対して、面積及びコストのそれぞれの合計は、 製品Dの何から求めるのでしょう? 製品Dにおける、最小面積及び最低コストが提示されている? あるとした場合、どちらが優先される?? それに部品A・B・Cにおいてどれだけの種類がある??? それらなくして、回答は困難なようにも思えるのですけど。
補足
ご回答ありがとうございます。 補足説明です。(補足になっていなかったらすみません。) 今回のものでは、 とにかく製品Dのコストを最小にすることを目的にしています。 部品個別のコストと製品D自身の面積(=部品の面積の合計)が 製品Dのコストに影響するとしています。 (面積が大きくてもコストが小さければ良しです。) 部品の数は、いまのところそれぞれ30個ほどですが、 後々、部品数の増加にも対応したいと思っています。
補足
ご回答ありがとうございます。 確かに、部品リスト上で部品の総コストを求めておいて、 最小コストのものを見つけるという方法がありますよね。 ありがとうございます。 質問の仕方が悪かったなと反省していますが、 これをソルバー機能を使って求めることはできるでしょうか。 結果を求める方法にもこだわりたいのです。 ソルバー機能にはこだわらないと書いたのにすみません。 マクロのことをほとんど知らないのですが、 ソルバー機能ではできないけど、マクロだとできるのかなと考えて、 そういう回答がこないかと勝手に期待して、 こういう書き方をしてしまいました。 お気づきの点があれば、アドバイスをお願いします。