- 締切済み
エクセルで組みあわせについて教えて下さい。
エクセル2000です。エクセルで組合せの合計をだしたいのですが、 A1 58 B1 13.5 C1 44.5 D1 51.5 E1 31 F1 49.4 G1 19.6 H1 41.5 J1 41 となっていて、その中から「292」に一番近い組合せを知りたいんですが、方法がありましたら教えて下さい。 上記の場合だったら 58、51.5、31、49.4、19.6、41.5、41 が292になるといった感じです。 292になるなら上記では7つ数字を使いましたが、5つでも6つでもいいです。ぴったりにならなくても近似値でもOKです。 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- mt2008
- ベストアンサー率52% (885/1701)
No.3です。 こんな手も……。No.3をそのまま使います。 J3に =ABS(292-J2) と入れます(292は求める値)。 ソルバーで目的セルをJ3にして、目標値を最小値にします。 これで目標値に一番近い値になる組み合わせが見つかると思います。
- mt2008
- ベストアンサー率52% (885/1701)
ぴったりの値が必ずあるのなら、アドインの「ソルバー」が使えます。 A2:I2に1/0で使用する/しないが入るとして、合計の値を表示する用に、J2に =SUMPRODUCT(A1:I1,A2:I2) と入れておきます。 ソルバーのパラメータ設定で、目的のセル「$J$2」、目的値:値「292」、変化させるセル「$A$2:$I$2」と設定し、制約条件に $A$2:$I$2 <= 1 $A$2:$I$2 >= 0 $A$2:$I$2 = 整数 と、設定して実行してください。制約条件を設定する時にくせがあり変なエラーっぽい物が出ますが気にせずに設定してください。「$A$2:$I$2 = 整数」の条件は設定ダイアログで「$A$2:$I$2」「区間」「整数」を選択すると設定できます。
補足
上記のやり方でぴったりになる場合はいいのですが、ぴったりにならな場合の方が多いと思うんですが、近似値そだすのはどうしたらいいですか?
- FEX2053
- ベストアンサー率37% (7991/21371)
これ、数学的には「コンビネーション」の分野に属する、「正解を得る ための計算が、要素数が増えると爆発的に増大する」例の一つとして 有名な命題じゃなかったですかね。 多分「一発で計算する」コトは不可能だと思います。VBAでコードは 書ける(それほど難しくない)のですが、全ての場合の数にわたって 合計を計算しなければなりませんから、要素が増えると計算時間は 物凄く長くなると思いますよ。
補足
VBAで書けるとしたらどんなのになるのですか?
- n-jun
- ベストアンサー率33% (959/2873)
Excel ナップザック http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLG_jaJP310JP310&q=%ef%bc%a5%ef%bd%98%ef%bd%83%ef%bd%85%ef%bd%8c%e3%80%80%e3%83%8a%e3%83%83%e3%83%97%e3%82%b6%e3%83%83%e3%82%af 的はずれでしたらごめんなさい。
補足
ぴったりになることもあれば、ならないこともあるんです。。。 でも、ぴったりになるときは使えそうです。 ありがとうございました。
お礼
なるほど!! わかりました!! ありがとうございます。