![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.3ベストアンサー
- 回答日時:
いわゆる「ナップザック問題」と呼ばれる種類の問題になると思います。
14個を選択する/しないなら、総当りしても16384個ですから、力技でも行けるかも。
画像を参考に、
1行目にデータの数値を横並び。
2行目に0~13の固定値を右から
3行目に2の0乗~2の13乗(8192)の固定値を右から
A列に0~16383の固定値
で、
B4:O16387の範囲に、
B4:=MOD(INT($A4/B$3),2)
をコピペして2進数の各桁の値を
P4:P16387の範囲に、
P4:=SUMPRODUCT($B$1:$O$1,B4:O4)
をコピペして、2進数の各桁のビットとデータの数値の積和
で、全16384通りの計算が行われるので、A4:末尾を選択して並べ替えすると、
合計が30002となる、
1515
2748
2195
680
7142
305
667
9950
4800
が確認できるとか。
--
もっと数値の数が増えると、この方法では厳しいので、
ナップザック問題をExcelで解く
http://www.geocities.co.jp/SiliconValley-Oakland …
みたいなプログラムで解くような事になります。
条件が違うのでプログラムはそのまま使えませんが、似た質問。
エクセルで、「袋詰め問題」を解きたい - Excel(エクセル) 解決済 | 教えて!goo
https://oshiete.goo.ne.jp/qa/1255891.html
![「excelで条件に合うよう、複数のセルの」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/1/59891_593df8dc6c278/M.jpg)
この回答へのお礼
お礼日時:2017/06/12 13:32
例では14個の数値を示しましたが、その時によって個数は変動します。
だいたい20個前後。
それを30000とか、一定の数値以上で最小のもの、との条件に当てはまる計算式を作れないかな、と安易に考えていました。
ナップザック問題というんですね。
ちょっと勉強してみます。
No.4
- 回答日時:
こんにちは
すでに、ANo3様が回答を出されていらっしゃいますが、エクセルにはソルバー機能があるので(私も使ったことはありませんが)、試しにやってみました。
https://support.office.com/ja-jp/article/%E3%82% …
(リボンのデータタブのソルバーです。ない場合はアドオンで追加する必要があります)
添付図のB列が0か1の値を取るものとして、E1に目的とする値を
=SUMPRODUCT(A1:A14,B1:B14)
として計算させています。
ソルバーの条件として、最小値を求めるものとして
E1 <= 30000
B列を0か1にするために
B1:B14 = 整数
B1:B14 <= 1
B1:B14 >= 0
の条件設定をしています。
解法を「エボリューショナリー」として実行すると、ANo3様の回答と同じものが得られます。(解答が出るまでに何十秒かかかります。)
しかしながら、「GRG 非線形」(←こちらが一般的ではないかと思われますが)として実行すると正しい解答は得られませんでした。(近いものにはなりますが)
エクセル本体の機能なので利用できれば簡単かと考えたのですが、私が使ったことがないのと、内部の計算方法や各種設定もちゃんとわかっていないので、何とも言えませんが正しい使い方をしていないのかもしれません。
こんな方法もあるよというご参考までに。
![「excelで条件に合うよう、複数のセルの」の回答画像4](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/9/587726_593e1d502f1f5/M.jpg)
No.2
- 回答日時:
ちょっと突き放しすぎるのも気が引けるのでアドバイス。
選択するセルの数が最大になる場合と最小になる場合を考慮する必要がある。
1
2
3
4
5
6
7
8
9
の、合計が15になる組み合わせを考えるとき、
1,2,3,4,5で15
6,9で15
7,8で15
8,9で15
のような組み合わせができる。
(ほかにもあるけどね)
こういった点も考慮する必要があるので、演算がめんどくさいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) Excel2019 列と列(2列)の数値の重複を調べたい 1 2023/05/11 13:35
- Excel(エクセル) Excelで、行に複数の数字が入力されているセルが複数の列存在し、行を跨いでセル内の数値を並び替える 5 2022/06/17 18:03
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- Excel(エクセル) 一つのセルに複数の関数を入力する方法 4 2022/09/30 13:42
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) Excel 特定セルの数値を参照したセルの0表示が空白にならないのはどうしてか? 3 2022/04/28 22:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ある表にフィルターをかけて出...
-
Lookup関数
-
セルの数を求めたい
-
Excelを無料で使うには? パソ...
-
IFとIFS関数
-
エクセルの数式バーのフォント...
-
EXCELの散布図で日付が1900年に...
-
エクセル日付 文字列の関数がエ...
-
再質問です。マクロの修正箇所...
-
データチェックを行うエクセル...
-
エクセルで「ページレイアウト...
-
【ExcelVBA】名前を付けて保存→...
-
Excelピボットテーブルの1行目
-
エクセルの問題です。絶対値の...
-
Excelの表示についての質問
-
Excel関数について教えてくださ...
-
エクセルのツールバーから数値...
-
Excelで表を作ったところに文字...
-
DATE関数で現在の年齢を出した...
-
Excelデータをコピペして、ペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報