• 締切済み

エクセルで組みあわせについて教えて下さい。

エクセル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です。 宜しくお願いします。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

No.3です。 こんな手も……。No.3をそのまま使います。 J3に =ABS(292-J2) と入れます(292は求める値)。 ソルバーで目的セルをJ3にして、目標値を最小値にします。 これで目標値に一番近い値になる組み合わせが見つかると思います。

kcqcp673
質問者

お礼

なるほど!! わかりました!! ありがとうございます。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

ぴったりの値が必ずあるのなら、アドインの「ソルバー」が使えます。 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」「区間」「整数」を選択すると設定できます。

kcqcp673
質問者

補足

上記のやり方でぴったりになる場合はいいのですが、ぴったりにならな場合の方が多いと思うんですが、近似値そだすのはどうしたらいいですか?

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

これ、数学的には「コンビネーション」の分野に属する、「正解を得る ための計算が、要素数が増えると爆発的に増大する」例の一つとして 有名な命題じゃなかったですかね。 多分「一発で計算する」コトは不可能だと思います。VBAでコードは 書ける(それほど難しくない)のですが、全ての場合の数にわたって 合計を計算しなければなりませんから、要素が増えると計算時間は 物凄く長くなると思いますよ。

kcqcp673
質問者

補足

VBAで書けるとしたらどんなのになるのですか?

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1
kcqcp673
質問者

補足

ぴったりになることもあれば、ならないこともあるんです。。。 でも、ぴったりになるときは使えそうです。 ありがとうございました。

関連するQ&A