プロが教える店舗&オフィスのセキュリティ対策術

エクセルを使用し、決められた合計になるような数値の組み合わせを表示するようにしたいのですが、どのようにしたらよいか皆さん教えて下さい。
例えば、
B列に
100・50・70・62・58・70・・・と数値が入力されています。
C1に300と入力しておきます。
300になる組み合わせはどれとどれ・・・なのかというものを作成したいです。
多数ある場合は、全ての組み合わせを表示したいです。
表示例として
B3とB5とB15・・・を合わせると合計C1が300になる、又は298又は302になるという表示をしたいのですがどのようにしたらよいでしょうか。
A列にコードを入力しているので数値の重複はありません。
宜しくお願い致します。

A 回答 (3件)

総当りで組み合わせを試し、その合計が与えられた数字と一致するかどうかを調べるプログラムを書くことになります。



なお、20項目くらいまでは何とか実用的に使えますが、30項目を超えると条件によっては総当りを試すのに数年かかる可能性があります。現実的な時間内に必ず回答が得られるようなプログラムを作成することはできません。

この回答への補足

回答ありがとうございます。
質問があるのですが、
入力してある項目が10項目とすると可能ですか?

また、エクセルにある機能でソルバーというのがあるそうですが
その機能で作成することはできるでしょうか。

補足日時:2005/10/21 15:54
    • good
    • 7

「セルの参照」には「C2:C??」のセル範囲を指定。


「記号」で「データ」を選択。
「制約条件」で「バイナリ」を選択。

のようにしておいて、「追加」を押してください。

なお、制約条件を追加する前に、まず「変化させるセル」を先に指定する必要があるかもしれません。「変化させるセル」と、制約条件の追加で指定する「セルの参照」では、同じ範囲のセルを指定します。
    • good
    • 3
この回答へのお礼

xcrOSgS2wY様ソルバーの使い方を教えて下さり、ありがとうございました。
おかげで決められた合計になる組み合わせを見つけることができました。
組み合わせの例は1つですが、
とても助かりました。
ありがとうございました。

お礼日時:2005/10/24 15:31

ソルバーを使う場合、こんな感じになります。



例えば、
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??"??(入力した行数をすべてカバーするように)"を入れたらよいですか。
そうすると【制約条件】のところは何を入力したらよいですか?

すみませんが、『バイナリ』とはどういう意味ですか。
いろいろと分からなくてすみません。

補足日時:2005/10/24 11:15
    • good
    • 4

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A