No.4ベストアンサー
- 回答日時:
こんにちは。
残るは、以下のようになりますね。
たぶん、そのままで、何もしなくてもよいとは思いますが、私は、以下のように、[並べ替え]てしまい、範囲を狭めました。 $C$1:$C8 で、それぞれを設定しなおしました。理由は、もう、ソルバーでは求められないからです。並べ替えは、意味があります。
80
221
233
237
307
325
403
487
こんどは、ソルバーでは、ぴったりがどうやらないようですから、今度はオプション側で、まず、[公差]は、10% にして、[精度] と[収束] を、共に、0.1 とし、[単位の自動設定]をチェック
そうすると、
80 1
221 0
233 1
237 0.909307783
307 0
325 0
403 0
487 1
-------------------
1015.505945
これでは用が足りませんので、273 ... 1 を入れ、487 ...0 をにして、 403 ...1にして、
80 1
221 0
233 1
237 1
307 0
325 0
403 1
487 0
-------------------
953
こんなことをしていたら、面倒でしょうがないなって思いましたので、途中から、マクロに切り替えてしまいました。良かったら、最初から、お使いください。
以下を、[標準モジュール]に貼り付けてください。
TargetNum の部分に数字を入れてください。
後は、表の通りです。
Const TargetNum As Long = 980
Const DATARANGE As String = "B1:B8" '数値の範囲
Const CONTROLRANGE As String = "C1:C8" '結果の範囲
Dim m As Long '母数
Dim n As Long '抽出数
Dim Num() As Long '抽出したn個の数
Dim NumSave() As Long
Dim NearNum As Long
Dim arItems As Variant
Sub yCombin()
Dim i As Long, s As String
arItems = Range(DATARANGE).Value
m = UBound(arItems) - LBound(arItems) + 1
For n = 1 To m
ReDim Num(1 To n)
SeaarchNos 1, 1, 0
Erase Num
Next
Range(CONTROLRANGE).ClearContents
For i = 1 To UBound(NumSave)
Range(CONTROLRANGE).Cells(NumSave(i)).Value = 1
Next
MsgBox "Finish!"
End Sub
Function SeaarchNos(x As Long, c As Long, t As Long) As Long
Dim i As Long, j As Long, tt As Long
j = x: tt = t
For x = j To m
Num(c) = x
tt = t + arItems(x, 1)
If c = n Then
If Abs(TargetNum - NearNum) > Abs(TargetNum - tt) Then
NearNum = tt
ReDim NumSave(1 To n)
For i = 1 To n
NumSave(i) = Num(i)
Next
End If
Else
SeaarchNos x + 1, c + 1, tt
End If
Next
End Function
お礼が遅くなり申し訳ありません。
今日出社し、早速してみたいと思います。
大変詳しく教えていただき助かりました。
ありがとうございました。
No.3
- 回答日時:
こんにちは。
>入力してOKをクリックすると、エラーがでます。
そうなんです。私は、なれてしまっているから、もう追加を押して、キャンセルをするのですが、ここがヘンですね。もう限界なのかなって思ったりします。古いまんまで、MS側は、ぜんぜん新しく直していませんしね。外部で作ったアドインは、ほとんどそうなんですね。
>あと変化させるセルがマイナス表示になるので、困ってます。
$C$1:$C$12 >=0
これが働いていませんね。もう一度、条件をみてください。
制約条件
--------------------------
$C$1:$C$12 <=1
$C$1:$C$12=整数
$C$1:$C$12 >=0
--------------------------
となっているはずです。
210
0
0
196
0
0
0
0
0
307
0
267
と出てくるはずです。少し、時間は掛かりますが、1分以内だと思います。
この回答への補足
詳しい解説本当にありがとうございます。
制約条件の入力ですが、追加を押してキャンセルするとうまくいきました。
いま980になる組み合わせが見つかった行は削除して、さらに残る数値で組み合わせをかんがえようと思うのですが、ちょうど980になる数値はないようで、980に近い組み合わせを探したいのですが、どのように制約条件を入力すればよろしいでしょうか?
最高でも990ぐらいで、下はいくつでもいいのですが・・・
何回も質問ありまして本当にすみません
今日はじめて会員登録し、質問をしました。
回答への補足へ入力するのではなく、お礼に入力しなければいけませんね。お礼ですら・・・間違ってすみませんでした。
そしてありがとうございました。
もし時間がありましたら、上記の補足に書いたものの方法も教えていただけたら幸いです。
No.2
- 回答日時:
こんにちは。
これは、解が見つかりますね。
B列 C列 D列
210 =B1*C1 ↓コピー
80
403
196
221
307
325
233
237
307
487
267
---------------------------
=SUM(D1:D12)
ソルバー:パラメータ設定
目的セル(E):$D$13
目標値: 値(V):980
変化させるセル
$C$1:$C$12
制約条件:
$C$1:$C$12=整数 (真ん中は、「区間」)
$C$1:$C$12 <=1
$C$1:$C$12 >=0
なお、うまく行かない場合は、オプションの公差を上げるとよいです。
公差:5 というのは、±5 % という許容範囲の意味です。
余談:
ソルバーは、作成されてから、15年近く経っていて、それなりに不具合が報告されています。新しいものがほしくても、なかなか、Excel単体よりも値段が高いし、マクロで作るには、面倒だしっていうところです。
この回答への補足
詳しい回答ありがとうございます。
一度挑戦してみたのですが、制約条件入力のところで、
入力してOKをクリックすると、エラーがでます。
これが不具合のことでしょうか・・・
キャンセルをおすと一応表示はされるのですが・・・
あと変化させるセルがマイナス表示になるので、困ってます。
一応組み合わせて980に近ければいいのですが、むずかしいですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 列の複数ある空白セルを飛ばして、セルに並べて表示したい 3 2023/02/12 16:49
- Excel(エクセル) エクセルで重複しない組み合わせの出し方 6 2023/01/12 23:51
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) エクセルの表示形式について教えてください あるセルの「A」という値と、別のセルの「B」という値を組み 4 2023/02/21 21:55
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) セルを数式で指定する方法 5 2022/04/13 16:55
- Excel(エクセル) エクセルで#以降の文字を取得したい 1 2022/03/28 13:14
- その他(Microsoft Office) エクセルについて質問です。 イフとイフカウントの組み合わせで =IF(COUNTIF(A3:A9,” 2 2023/02/24 22:13
- Visual Basic(VBA) VBA。壁の間隔Xミリの中に、5種類の異なる巾の板を敷き詰め、X以下でXに近い板の組み合わせを算出 6 2023/04/23 21:33
- Excel(エクセル) エクセルの関数について 5 2023/04/30 17:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
Microsoft1Officeの互換ソフト...
-
Excel ピボットテーブルで日付...
-
エクセル関数を教えてください
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
LOOKUP関数を使えばいいのでし...
-
エクセル 白黒印刷で白線を印刷...
-
【関数】先頭だけにある、半角...
-
【関数】適切な文字数の数字を...
-
Excelのチェックボックスの使い...
-
エクセルでの作業計算方法について
-
Excelのpivotについて質問です
-
WPS OFFICEでの縦書きについて
-
時間によってファイル名が変わ...
-
エクセルのセルに同じ大きさの...
-
Aというブックの1というシート...
-
エクセルの順位別一覧表の自動...
-
西暦や和暦の表示をyyyymmdd表...
-
【マクロ】エクセルにかいてあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報