- ベストアンサー
エクセルで決められた合計になる組み合わせを作成
- エクセルを使用し、決められた合計になるような数値の組み合わせを表示する方法について教えてください。
- 例えば、B列に100・50・70・62・58・70と数値が入力されています。C1に300と入力しておきます。300になる組み合わせはどれとどれなのか、そして多数ある場合は全ての組み合わせを表示したいです。
- A列にはコードが入力されているため、数値の重複はありません。どのようにしたらこの組み合わせを表示できるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
総当りで組み合わせを試し、その合計が与えられた数字と一致するかどうかを調べるプログラムを書くことになります。 なお、20項目くらいまでは何とか実用的に使えますが、30項目を超えると条件によっては総当りを試すのに数年かかる可能性があります。現実的な時間内に必ず回答が得られるようなプログラムを作成することはできません。
その他の回答 (2)
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
「セルの参照」には「C2:C??」のセル範囲を指定。 「記号」で「データ」を選択。 「制約条件」で「バイナリ」を選択。 のようにしておいて、「追加」を押してください。 なお、制約条件を追加する前に、まず「変化させるセル」を先に指定する必要があるかもしれません。「変化させるセル」と、制約条件の追加で指定する「セルの参照」では、同じ範囲のセルを指定します。
お礼
xcrOSgS2wY様ソルバーの使い方を教えて下さり、ありがとうございました。 おかげで決められた合計になる組み合わせを見つけることができました。 組み合わせの例は1つですが、 とても助かりました。 ありがとうございました。
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
ソルバーを使う場合、こんな感じになります。 例えば、 B2,B3,B4,...に数値を入力しておき、 C1に「目標の数値」を入力します。 さらに、ソルバーの下準備として A2に「=B2*C2」を入力し、これをA3,A4,...にドラッグしてコピー。 A1に「=SUM(A2:A??)-C1」と入力します(A??は、入力した行数までカバーするように)。 こうしておいてソルバーを起動し、目的セルをA1に、目標値の値をゼロに、変化させるセルをC2:C??(入力した行数をすべてカバーするように)に設定し、制約条件に「C2:C?? = バイナリ」を追加して実行します。 うまく組み合わせが見つかった場合、その組み合わせで選択した数字の隣(C2:C??のセル)に1が、選択しなかった数字にはゼロが入ります。1が入っているセルの横の数字をすべて足し合わせると、目標の数値になっているはずです。 ただしこの場合、いくつもの組み合わせが考えられても、そのうち1つしか表示してくれません。(ソルバーの使い方で「次を探す」というのができるのかどうか・・・ちょっと分かりませんでした。)
補足
早急な回答ありがとうございます。 質問があるのですが、 下記の文↓です。 >制約条件に「C2:C?? = バイナリ」を追加して実行します ソルバーを起動し、パラメータ設定画面が出てきます。 その時、【制約条件】のところの入力の仕方が分からないので教えて頂きたいのですが。 【追加】をクリックし、【セルの参照】と【記号】と【制約条件】を入れるところがあります。 入力の仕方なのですが、 【記号】のところには、"="イコール"を入力し、【セルの参照】と【制約条件】のところには 何を入力したらよいですか。 【セルの参照】に"C2:C??"??(入力した行数をすべてカバーするように)"を入れたらよいですか。 そうすると【制約条件】のところは何を入力したらよいですか? すみませんが、『バイナリ』とはどういう意味ですか。 いろいろと分からなくてすみません。
補足
回答ありがとうございます。 質問があるのですが、 入力してある項目が10項目とすると可能ですか? また、エクセルにある機能でソルバーというのがあるそうですが その機能で作成することはできるでしょうか。