ID非公開

2022/1/23 11:45

22回答

エクセルで

補足

数学得意な方でエクセルは分からないけど、計算式なら分かるという方はそちらでも構いません。

Excel | 数学366閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

手順を1つ忘れていました。 VBEでソルバーの参照設定を行わないとソルバーのマクロが動きません。 上記4.の前後どちらかで参照設定を行います。 VBEのメニューバーの「ツール」→「参照設定」で出現するダイアログの「Solver」にチェックを入れて「OK」をクリックしてください。

ThanksImg質問者からのお礼コメント

何度も返信いただきありがとうございました。おかげ様で無事完成することが出来ました。

お礼日時:1/29 23:07

その他の回答(1件)

0
ID非公開

2022/1/26 15:31

「出来れば自動更新される方が嬉しい」とのことなのでマクロを使いソルバーで最小値を求めます。 ワークシートの配置は画像参照。 ワークシートに数式を以下のとおり設定します。 C2セルに=SUM(C5:E5) F5セルに=MAX(C5:E5)-MIN(C5:E5) D10セルに=D21 D11セルに=D21 D12セルに=D21 E10セルに=D22 E11セルに=D23 E12セルに=D24 F10セルに=(2*$C$5+$D$5+$E$5)*D10 F11セルに=($C$5+2*$D$5+$E$5)*D11 F12セルに=($C$5+$D$5+2*$E$5)*D12 ソルバーのパラメーターを画像のとおり設定します。 「制約条件の対象」は記載内容を間違えないでください。 そのうえで、マクロは以下のとおりです。 Sub sample() Dim TARGET(5), X(5), Y(5), Z(5), DEF(5) Range("D16:D18").ClearContents For I = 1 To 5 SolverOk SetCell:="$C$2", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$5:$E$5", _ Engine:=1, EngineDesc:="GRG Nonlinear" SolverSolve Userfinish:=True TARGET(I) = Range("C2") X(I) = Range("C5") Y(I) = Range("D5") Z(I) = Range("E5") DEF(I) = Application.Max(Range("C5:E5")) - Application.Min(Range("C5:E5")) If Application.Min(Range("C5:E5")) = X(I) Then Range("D16") = Range("C5") + 1 ElseIf Application.Min(Range("C5:E5")) = Y(I) Then Range("D17") = Range("D5") + 1 ElseIf Application.Min(Range("C5:E5")) = Z(I) Then Range("D18") = Range("E5") + 1 End If If I >= 2 Then If TARGET(I) > TARGET(I - 1) Or DEF(I) >= DEF(I - 1) Then Exit For End If Next Range("C5") = X(I - 1) Range("D5") = Y(I - 1) Range("E5") = Z(I - 1) End Sub

画像