人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelで、ランダムな10個〜30個の数値があり、その数値から重複無くいくつかを足し合わせて、目的の数値とする方法はありますか?

例)1258;800;777;584;498;455;21;36;11;5
という10個の数字から、合計が2302となる数値の組み合わせがあるか見つける。
上記の例だと1258+584+455+5=2302という答え。

関数で解決したいです。
マクロは使いたくありません。

●質問者: asamiros
●カテゴリ:コンピュータ
✍キーワード:777 Excel マクロ ランダム 数字
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● garyo
●30ポイント

http://www.is.titech.ac.jp/~watanabe/myhome/NP.html

これは通常NP問題と呼ばれています。

URLを参照願います。

全部試せば答えがでるが、数が増えると組み合わせの数が多くなり実質的に計算不能になる問題です。

◎質問者からの返答

なるほど。総当りしか手が無いんですね。


2 ● garyo
●60ポイント

http://www.vector.co.jp/

Vector:ソフトウェア・ライブラリ&PCショップ

URLはダミーです。

EXCELを使用して計算する方法を考えます。

(当然数が増えると計算不能になります)

例 1,2,3,4の4つの数の組み合わせを調べる場合

全ての数は(選ばれる、選ばれない)のどちらかであるので

組み合わせの数は2^4=16通りになる。

A1-A16に「1」を入れる

B1-B16に「2」を入れる

C1-C16に「3」を入れる

D1-D16に「4」を入れる

E1=1,E2=2,...,E16=16を入れる

F1-F16に「=MOD(E1,2)」を入れる

G1-G16に「=MOD(INT(E1/2),2)」を入れる

H1-H16に「=MOD(INT(E1/4),2)」を入れる

I1-I16に「=MOD(INT(E1/8),2)」を入れる

J1-J16に「=A1*F1+B1*G1+C1*H1+D1*I1」を入れる

全てのセルを選択しJの列でソートする。

Jの値が求める値になる行が答え

◎質問者からの返答

やってみました。2進数を使った総当りですね。

Excelだと、行が65,536までだから、

16個までが限界ですね。

16個以内なら、この方法で解決できますね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ