- ベストアンサー
エクセル関数で全体量の半分に近い組合わせを出したい
(1) 11.5 (2) 15.6 (3) 30.5 (4) 50.8 . . . . (20) 45.4 これらのような数字が20個程度あり、例えば全て足した重量が500だったとすると大体半量の250に近い組み合わせを関数で出したいです。 条件としては、一つの数字は一回しか使えません、きっちり半量じゃなくても出来るだけ近い値で良いです。どの番号の物を組み合わせて250ぐらいになったか分かるようにしたいです。 何かちょうど良い関数はあるでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ひとつだけ補足です。 条件は「0か1」ですから、今までの条件をすべて削除して、 セル参照に「$C$1:$C$20」、真ん中の不等号を「bin」にし、、 制約条件に「バイナリ(自動入力)」としてやると、条件がすっきりしますね(汗)。 情報があっちに行ったりこっちに行ったりで混乱させて申し訳ないです。
その他の回答 (2)
- tsubuyuki
- ベストアンサー率45% (699/1545)
> C列に-1が出て引き算も組み込まれていました。 セル参照に「$C$1:$C$20」、真ん中の不等号を「>=」、 制約条件に「0」と入力し、追加ボタンを押します。 これで、「0以上」が追加されます。 ・・・が、これだと「250丁度」になるパターンが無い場合にエラーがでますね(汗)。 申し訳ないです。 私もまだまだ勉強不足のようです(陳謝)。
お礼
ダメな場合は少し値を変えれば大丈夫ですよね^^ 十分作業が楽になりましたので、ありがとうございました。
- tsubuyuki
- ベストアンサー率45% (699/1545)
関数は(おそらく)ありません。 かわりにエクセルの拡張機能「ソルバー」というアドインを使うと比較的楽です。 2010を基準に説明しますので、 ヴァージョンが違う際は逐次お調べください。 まず、「ソルバー」アドインを組み込みます。 リボンの「ファイル」タブから「オプション」⇒「アドイン」と進みます。 (この時点でアドイン一覧に「ソルバー アドイン」が有れば、この後は不要です。) 管理:Excel アドイン であることを確認し、「設定」ボタンを押します。 ダイアログ内の「ソルバー アドイン」にチェックを入れ、「OK」で閉じます。 これでアドインの組み込みが完了です。 リボンの「データ」タブに「ソルバー」があることを確認してください。 データを準備します。 少しでも簡単に考えられるように、図の左側のように A列:連番、B列:数字、C列:空白として、 D列には「=B2*C2」と入力し、下方向にフィルしておきます。 B21セルには「=SUM(B1:B20)」で数字の合計を求め、 B22セルには「=B21/2」として、「半量」を計算しておきます。 D21セルには「=SUM(D1:D20)」として、計算結果の合計を計算させます。 では、「ソルバー」を使ってみます。 先ほど追加された、リボンの「データタブ」⇒「ソルバー」をクリックし、 「ソルバーのパラメーター」ダイアログを表示します。 ダイアログの上から順に ・目的セルの設定:$D$51 ・目標値:指定値=250 (←B22セルの計算結果を「手入力」しましょう) ・変数セルの変更:$C$1:$C$20 としてやります。 ざっと説明すると、「変数セル」の値をアレコレ組み合わせて、 「目的セル」の計算結果を、「目標値」に近づける・・という感じです。 もう一工夫。 > 半量に近い組み合わせ > 一つの数字は一回しか使えません という事ですから、C列には「0か1」しか入らない、という条件がつきます。 これをソルバーに認識させるため、「制約条件の対象」に条件を入れ、制約をかけます。 「追加ボタン」をクリックし、「制約条件の追加」ダイアログを出します。 まず、セル参照に「$C$1:$C$20」、真ん中の不等号を「<=」、 制約条件に「1」と入力し、追加ボタンを押します。 これで、C列には「1以下」の数字しか入らなくなりました。 でも、C列に小数が入られると困りますので、 セル参照「$C$1:$C$20」で、記号を「int」にしてやります。 (制約条件は自動的に「整数」が入ります。) これを追加することによって、C列には「1以下かつ整数」=「0か1」しか認めない、 という制約が整いました。 これで、準備完了です。 ここまで頑張って「解決」ボタンを押すと、エクセル(と言うかソルバー)が 一生懸命色々な組み合わせを(自動的に)試し、 (少々時間はかかりますが)結果を導いてくれます。 その結果が、図の右側半分です。 使い方次第で非常に便利に使える機能ではあります。 是非、お試しくださいませ。
お礼
ありがとうございます! 早速作ってやってみましたが、C列に-1が出て引き算も組み込まれていました。 実際には引く事は出来ないので、1か0だけにしたいのですが条件追加の所でどう入力すれば良いのでしょうか。 あと画面をプリントスクリーンで撮ったのですが、どこにどうやって貼り付けたらいいのだかが・・・・
お礼
ありがとうございます! できました!