エクセルで決められた合計になる組み合わせを作成

このQ&Aのポイント
  • エクセルを使用し、決められた合計になるような数値の組み合わせを表示する方法について教えてください。
  • 例えば、B列に100・50・70・62・58・70と数値が入力されています。C1に300と入力しておきます。300になる組み合わせはどれとどれなのか、そして多数ある場合は全ての組み合わせを表示したいです。
  • A列にはコードが入力されているため、数値の重複はありません。どのようにしたらこの組み合わせを表示できるでしょうか?
回答を見る
  • ベストアンサー

エクセルで決められた合計になる組み合わせを作成

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

  • foo-m
  • お礼率65% (82/126)

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

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

foo-m
質問者

補足

回答ありがとうございます。 質問があるのですが、 入力してある項目が10項目とすると可能ですか? また、エクセルにある機能でソルバーというのがあるそうですが その機能で作成することはできるでしょうか。

その他の回答 (2)

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.3

「セルの参照」には「C2:C??」のセル範囲を指定。 「記号」で「データ」を選択。 「制約条件」で「バイナリ」を選択。 のようにしておいて、「追加」を押してください。 なお、制約条件を追加する前に、まず「変化させるセル」を先に指定する必要があるかもしれません。「変化させるセル」と、制約条件の追加で指定する「セルの参照」では、同じ範囲のセルを指定します。

foo-m
質問者

お礼

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

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

ソルバーを使う場合、こんな感じになります。 例えば、 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つしか表示してくれません。(ソルバーの使い方で「次を探す」というのができるのかどうか・・・ちょっと分かりませんでした。)

foo-m
質問者

補足

早急な回答ありがとうございます。 質問があるのですが、 下記の文↓です。 >制約条件に「C2:C?? = バイナリ」を追加して実行します ソルバーを起動し、パラメータ設定画面が出てきます。 その時、【制約条件】のところの入力の仕方が分からないので教えて頂きたいのですが。 【追加】をクリックし、【セルの参照】と【記号】と【制約条件】を入れるところがあります。 入力の仕方なのですが、 【記号】のところには、"="イコール"を入力し、【セルの参照】と【制約条件】のところには 何を入力したらよいですか。 【セルの参照】に"C2:C??"??(入力した行数をすべてカバーするように)"を入れたらよいですか。 そうすると【制約条件】のところは何を入力したらよいですか? すみませんが、『バイナリ』とはどういう意味ですか。 いろいろと分からなくてすみません。

関連するQ&A

  • エクセルで合計を求めるために

    エクセルで合計の数値を求めたいです 状況としては A列に数字が入力されています B列に入力があったものだけの合計をC1に表示させたいです 例としては A列 B列 100  1 150 200 250  山   この場合の合計をC1に100+250=350 B列の入力内容は状況によって変わります 現在はC1=IF(A1="","",B1)という関数を別の箇所に作って、それの合計を出させていますが、出来れば別の箇所に計算式を作らずにすむ方法を教えてください。お願いします

  • 合計値が同じ組み合わせ

    下記の様な事ってEXCELの関数を使って、出力は可能でしょうか? 可能でしたら是非とも教えてください。 例)B列の1行目から10行目にそれぞれ数字が入力されていて、そこから4つのセルを抜き出し、合計値が30となる組み合せ全てを抽出する。

  • エクセルVBAマクロですこし変わった合計の方法

    添付画像左のように、A列に1~4、4(1)~(3)までナンバーが記入されており、B列C列には数値が含まれているとき、( )が存在している場合のみ( )が存在しないナンバー(例の場合は4)のB列C列に( )があるナンバー(例の場合(1)~(3))の合計を添付画像右がわのように表示させたいとき、どのようなマクロを組めばできますでしょうか。 全てお願いしてしまいますと、コードも長くなってくるのではないかと思われますので、画像では入力シートから表示シートに切り替わっているということですが、入力シートの空白セルへの表示でもかまいません。 ( )つきナンバーのB~後の値を( )なしナンバーのB~後に合計できる方法をお教え頂ければ幸いです。

  • エクセル 3行ずつの合計

    エクセルの質問です。 A列にID、B列に数値が入力されているとします。そしてC列にB列の2行ずつの合計を計算したいのですが、どうしたらいいでしょうか。 A | B  | C 1 | 25 | ID1から3の合計 2 | 24 | ID4から6の合計 3 | 37 | ID7から9の合計 4 | 32 | ID10から12の合計 ・ ・ ・ 数百行はあるのでいちいちちょこちょこと合計するのが苦痛なんです。よろしくお願いします。

  • エクセル セルの組み合わせ

    エクセル表の中で目的の数値になるセルの組み合わせを探したいです A列  B列に a  210 b  80 c  403 d  196 e  221 f  307 g  325 h  233 i  237 j  307 k  487 L  267 のようにあります。 これを組み合わせて980に近い組み合わせをいくつかさがしたいのですが、 どうしたらできるでしょうか。重複はできないのです。 ソルバーで挑戦しようと思いましたが、使い方がわかりません。 だれか教えてください。おねがいします。

  • エクセルでA列、B列、C列、D列、E列に数値が入力されており、それぞれ

    エクセルでA列、B列、C列、D列、E列に数値が入力されており、それぞれの数値が重複しないように合計数値を計算したいのですが、何か良い方法は無いでしょうか? 例 A B C D E 1 5 12 6 13 13 2 7 13 7 14 14 3 16 8 20 5+12+6+13+13=49 5+12+7+13+13=50 よろしくお願いします

  • エクセル 列の数値の合計の表示について、

    エクセル 列の数値の合計の表示について、 ごく基本的なことだと思いますが、教えてください。 例えばA列に上から順に数値を入れていき、その合計をB列に表示させるとします。 私のやり方はB列の計算式を=B1+A2としてこのコピーを、数値の数だけ下に下げることで目的を達しました。 すでにA列に数値が何個も入力している場合はこれで良いのですが・・。 ここから質問なのですが、例えばA列に現在10個数値がありB列に順番にその合計が出ているとします。 次にA列11行目に新規に数値を入力した時に、自動的にその合計がB列に出るようにしたいのです。 予めB列の数式のコピーを11行目以降に延ばしておくと、10行目の合計の数値が延ばした行まで並ぶので困っています。 よろしくお願いします。

  • エクセル:セルを参照して計算

    お世話になります。 A列にコード番号が、B列に数値が入っています。 A列のコード番号は順不同で重複もあります。 C列にはコード番号の一覧が入っています。(重複なし) C列と一致するコード番号をA列から探し、対応するB列の合計をD列に表示する。 A列に一致するコード番号がないときは0と表示させる。 この場合、D列にはどのような計算式を入力されておけばよいのでしょうか。 例) A1にA、A2にB、A3にC、A4にA、A5にB、A6にD B1に10、B2に20、B3に30、B4に15、B5に20、B6に50 C1にA、C2にB、C3にC、C4にD、C5にE・・・・ この場合 D1には10+15なので25、D2には20+20なので40、D3には30、D4には50、 D5には0を入力する。 よろしくお願いします。

  • エクセルの関数について

    エクセルについて質問です。 「ある数値を入力したら常に一定の文字列を表示する」にはどの関数がいちばん便利でしょうか? 例:セルA1に101を入力→B1に「りんご」を表示 セルA2に201を入力→B2に「みかん」を表示 のように全部で50程度の数値&文字列の組み合わせ(コード表)を 判別したいと思っています。 よろしくお願いします。

  • 組み合わせを上手に選ぶ(内容を変えて再投稿)

    手元のExcelデータには、A列に商品名、B列に値段が入力されています。 ここでC列に1以上の整数を1・2・3・・・と順に、以下の条件に合うように自動的に入力したいです。 条件とは、C列に同じ数値が入った行のB列セルの合計が、(全てのC列の数値において)10000以上になるように、そのうえでC列の最大値がより大きくなるようにすることです。 商品の内容(値段)によっては、全て10000以上になる組み合わせ方が複数存在することもありますが、任意の1種類だけC列に自動入力できれば良いです。 但し、A・B列への入力が今後増えていくので、その都度C列の自動入力をし直せるものがよいです。 以上の内容で、Excelを上手に使うアイデアを紹介していただければと思います。