Excel 97 で Excel のソルバーを使用して、Visual Basic マクロを作成する方法

文書翻訳 文書翻訳
文書番号: 843304 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

この資料では Microsoft Excel 97 で Microsoft Excel ソルバーを使用して、Microsoft Visual Basic マクロを作成する方法について説明します。Microsoft Excel ソルバーは、Excel のアドインです。

さらに、この資料にはマクロを作成する方法、マクロを設計する方法、およびマクロの制限が機能する方法についての情報が含まれています。この記事は、アルゴリズムと Microsoft Excel ソルバーで使用されるメソッドについて説明します。次の一覧で説明するすべてのトピックを提供します。

はじめに

この資料に Excel に関する情報が含まれています。ソルバー。

詳細

Microsoft Excel ソルバーの説明

Microsoft Excel ソルバーを追加します。 Microsoft Excel ソルバーをすることができますです。最適値は、特定の数式を確認するのにはExcel ワークシート上のセルを対象します。その他の値を Microsoft Excel ソルバーを調整します。目的セルには数式を使用して関連するセルです。した後数式を作成し、一連のパラメーターや制約を定義します。変数式は、Microsoft Excel ソルバーは到着するのには、さまざまなソリューションをしようとします。すべての制約条件を満たすの質問の答え。Microsoft Excel ソルバーは次の要素を使用します。"演算式を解決します。]
  • 目的セルが目的セルは、目的です。最小限に抑えること、ワークシート モデルのセルには、最大化、または特定の値に設定します。
  • 変化させるセル、変化させるセルは、意思決定変数。これらのセルは、目的セルの値に影響します。これらのセルします。目的セルの最適なソリューションを検索するのには、Microsoft Excel ソルバーによって次のように変更します。
  • の制約に制約のあるセルの内容に制限します。を例は、1 つのセルで、ワークシートのモデルは整数値に制限されて、もう 1 つのセルが指定した値よりも小さくされているに制限されてがあります。
作成し、Microsoft Excel ソルバー モデルでの操作を自動化することができます。Microsoft Visual Basic for Applications (VBA) マクロを使用します。この資料を使用する方法について説明しますMicrosoft Excel ソルバー関数を使用するのには、VBA のマクロ言語Microsoft Excel 97。この資料で VBA 言語や、Microsoft Visual Basic エディターを Microsoft Excel に精通していること前提としています97 します。 この資料で使用される例をダウンロードは、次のマイクロソフト Web サイトを使用できます。
http://download.microsoft.com/download/excel97win/solverex/1.0/WIN98Me/EN-US/SolverEx.exe
メモ マクロで説明されている例を使用することもできます。記事 Microsoft Excel バージョン 5.0 および 7.0 では。

Microsoft Excel ソルバー関数を VBA マクロの使用方法

VBA マクロでは、Microsoft Excel ソルバー アドイン関数を使用するのにはアドイン ブックの VBA プロジェクトから参照する必要がありますがマクロが含まれています。Microsoft Excel ソルバー アドインを参照しない場合が表示されます、マクロを実行しようとすると次のエラーをコンパイルします。
コンパイル エラー: サブまたは定義されていない関数。
するには次の使用例では Microsoft Excel ソルバー アドインで、ブック内のマクロを参照手順:
  1. ブックを開きます。
  2. で、 ツール メニューをポイントするにはマクロプロパティ Visual Basic エディター.
  3. で、 ツール メニューをクリックして参照.
  4. で、 参照可能なライブラリ ボックスの一覧でクリックして選択します。 Solver.xls チェック ボックスをオンにしをクリックしてください ].

    メモ Solver.xls に表示されない場合は、 参照可能なライブラリボックスの一覧でをクリックしてください 参照.で、 追加参照 ダイアログ ボックスで検索して、Solver.xla ファイルを選択し、クリックしてください。 と入力して.Solver.xla ファイル通常があるのC:\Program 名 Office\Office\Library\Solver サブフォルダー。
Microsoft Excel ソルバー関数を使用する準備ができましたがVBA マクロです。

作成し、Microsoft Excel ソルバーの単純なモデルを解決する VBA マクロを作成する方法

Microsoft Excel ソルバー関数の多くは、次の 3 つを提供していますが関数を作成して、モデルを解決するために基本的なです。
  • SolverOK 関数
  • SolverSolve 関数
  • SolverFinish関数

SolverOK 関数

SolverOK 関数は、基本的な Microsoft Excel ソルバー モデルを定義します。ソルバー関数を通常です。Microsoft Excel ソルバー モデルの構築に使用する、1 つ目の関数。ソルバー関数クリックする操作と同じです。 ソルバー で、 ツールメニューの [し、[のオプションを指定します。 [ソルバー: パラメーターダイアログ ボックス。SolverOK 関数の構文は次のとおりです。
ソルバー (SetCell MaxMinVal、ValueOf は ByChange)
ソルバー関数の構文は、次の情報を説明します。
  • SetCell目的セルを指定します。
  • MaxMinVal目的のセルを解決するかどうかに対応します。(1) の最大値、最小値 (2) または特定の値 (3)。
  • にセル値を指定します。場合は、MaxMinValに設定 3 には、この引数を指定する必要があります。MaxMinValを 1 または 2 に設定すると、この引数を省略することができます。
  • ByChangeセルまたは変化させるセルの範囲を指定します。
図 1 に関連付けます、ソルバー関数での引数は、パラメーターを [ソルバー: パラメーター ダイアログ ボックス。

図 1。ソルバーが関連付けられているパラメーター引数

元に戻す画像を拡大する
 図 1。関連付けられているパラメーターソルバーの引数


SolverSolve 関数

パラメーターを使用して、モデルをソルバーを解決します。ソルバー関数で指定されたこと。ソルバーを実行するのと同じです。クリックしてするのには 解決しました 続いて [ソルバー: パラメーター ダイアログ ボックス。SolverSolve 関数の構文は次のとおりです。
SolverSolve (UserFinish、ShowRef)
次の情報、ソルバーの構文について説明します。
  • UserFinishを示して、ユーザーを解決するために終了するかどうか、モデルです。

    結果の値を取得するのには ソルバー結果 ダイアログ ボックスで、この引数を TRUE に設定します。結果を返します表示します。 ソルバー: 探索結果 ダイアログ ボックスで、この引数を設定します。FALSE に
  • ShowRef Microsoft Excel ソルバーが返されるときに呼び出されるマクロを識別します。中間ソリューションです。

    真が、状況に応じて含まれます関数の引数StepThruだけ渡されると、引数ShowRefを使用してください。

SolverFinish 関数

SolverFinish関数は結果の処理方法を示す、解決処理の終了後に作成するレポートの種類。SolverFinish関数の構文は次のとおりです。
SolverFinish (解、どの)
SolverFinish関数の構文は、次の情報を説明します。
  • 最終的な結果の処理方法を指定します。が 1 の場合は、ソリューションの最終的な値は保持されます、値を交換してください。が 2 の場合は、ソリューションの最終的な値が破棄され、され、以前の値が復元されます。
  • どのマイクロソフトのレポートの種類を示す配列を指定します。Excel ソリューションに到達したときに作成されます。どの1 に設定されている場合は、Microsoft Excel レポートを作成します。場合を設定するのには2 は、Microsoft Excel 作成するかと 3 つの Microsoft に設定Excel の制限のレポートを作成します。これらのレポートの詳細についてを参照してください。"レポート ソリューションを作成する方法」に記載します。
図 2。関連付けられている Microsoft Excel ソルバー結果オプションSolverFinish引数

元に戻す画像を拡大する
 図 2。ソルバー結果オプションSolverFinish 引数に関連付けられました。


この記事は、単純な Microsoft Excel ソルバー モデルを対話的に作成する方法について説明します。最初の手順です。ワークシートのモデルを作成します。ワークシート データの一部のセルが含まれます数式が含まれている 1 つ以上のセル。この式に依存しています。ワークシートのセルにします。ワークシートを設定した後をクリックしてください。 ソルバー で、 ツール メニューです。で、[ソルバー: パラメーター ダイアログ ボックスで、目的セルの値を指定すること変更するセルの範囲を解決しようとして、制約。クリックしてください。 解決しました 解の探索を開始するのには。Microsoft Excel ソルバーがソリューションを検出すると、結果は、ワークシートおよび Microsoft Excel ソルバーで表示されます。最終的な結果を保持する場合は、メッセージが表示されます、メッセージ ボックスが表示されますか図形を破棄する場合します。これらのオプションのいずれかをクリックすると、Microsoft Excel ソルバーを終了します。

図 3次の手順を使用して作成することができますは、単純なモデルを示しています。

図 3。単純なモデル: モデルの「の平方根

元に戻す画像を拡大する
 図 3。A単純なモデル: モデルの「の平方根


数式が含まれている、この例では、変更セル A1、A1 = ^2、値はようになりますセル A2 の値を 50 に等しいの。つまり、他の平方根を見つける50 の。平方根のモデルには制約はありません。Find_Square_Rootマクロは、次のタスクを実行します。
  • セル A2 の値が 50 の値を解決するモデルを設定します。セル A1 の値を変更します。
  • モデルを解決します。
  • 最終結果がワークシートを保存します。表示します。 ソルバー: 探索結果 ダイアログ ボックス。
この簡単なマクロ Microsoft Excel ソルバー モデルを作成し、解決します。ユーザーの介入なし。次のコードは、 Find_Square_Rootマクロについて説明します。
    Sub Find_Square_Root()

    ' Set up the parameters for the model.
    ' Set the target cell A2 to a value of 50 by changing cell A1.
    SolverOK SetCell:=Range("A2"), MaxMinVal:=3, ValueOf:=50, _
         ByChange:=Range("A1")

    ' Solve the model but do not display the Solver Results dialog box.
    SolverSolve UserFinish:=True

    ' Finish and keep the final results.
    SolverFinish KeepFinal:=1

    End Sub
Find_Square_Root2マクロはFind_Square_Rootマクロの修正バージョンです。InputBox関数を使用する場合は、 Find_Square_Root2マクロを求めるこの値は、目的のセルを解決します。値を入力した後、Find_Square_Root2マクロソルバーの値の引数の値としてこのパラメーターを設定、解決して、結果を変数に保存されます。平方根をソリューションを破棄し、ワークシートの値を復元します。元の状態にします。どのように結果のいずれかで保存することができます基本的には、 Find_Square_Root2マクロを示します変数とは、元の値にセルの変化からの復元します。

次のコードは、 Find_Square_Root2マクロについて説明します。
    Sub Find_Square_Root2()

    Dim val
    Dim sqroot

    ' Request the value for which you want to obtain the square root.
    val = Application.InputBox( _
         prompt:="Please enter the value for which you want " & _
         "to find the square root:", Type:=1)

    ' Set up the parameters for the model.
    SolverOK SetCell:=Range("A2"), MaxMinVal:=3, ValueOf:=val, _
         ByChange:=Range("A1")

    ' Do not display the Solver Results dialog box.
    SolverSolve UserFinish:=True

    ' Save the value of cell A1 (the changing cell) before you discard 
    ' the results.
    sqroot = Range("a1")

    ' Finish and discard the results.
    SolverFinish KeepFinal:=2

    ' Show the result in a message box.
    MsgBox "The square root of " & val & " is " & Format(sqroot, "0.00")

    End Sub

レポート ソリューションを作成する方法

Microsoft Excel ソルバーをいくつかの種類を説明するレポートを提供していますが、どのように変更された結果、距離の制約が重要な値に付属します。各レポートの別のワークシート、ブック内に格納されます。これらの後のレポートの種類です。Microsoft Excel ソルバーが用意されています。
  • 目的セルと変化させるセルレポート- レポートの一覧を示します。対応する元のと最終的な値、制約、および制約に関する情報です。
  • - の秘密のレポートについてどのように機密性の高い情報を提供します。小さな変化は、ターゲット セルの数式にすることをお勧めします。
  • 目的セルと変化させるセル制限レポート制限レポートを一覧表示します。それぞれの値、上限と下限、およびターゲット値です。
レポート モデルを作成するのには、値の配列を指定します。SolverFinish関数のどの引数をします。詳細についてはため、どの引数を参照してください、"SolverFinish (解、どの)"セクションに移動します。制限のレポートを生成する場合の例については、Find_Square_Root2マクロを作成し、解決、変更SolverFinish関数の中で、次のコード例に似たようにマクロ。
    SolverFinish KeepFinal:=2, ReportArray:= Array(3)
SolverFinish関数を変更して、複数のレポートを生成するのにはこれは、次のサンプル コードのようになります。
    SolverFinish KeepFinal:=2, ReportArray:= Array(1,2)

ループ マクロで、マイクロソフトの ExcelSolver 関数を使用する方法

多くの場合、Microsoft Excel ソルバーを解決しておくことをお勧めは、対象のセルに複数の値です。このいずれかを使用して達成することは一般的にすることができます。ループの構造は VBA で使用可能です。

Create_Square_Root_Tableマクロでループ マクロを Microsoft Excel ソルバーがどのように動作を説明します。Create_Square_Root_Tableマクロ テーブルを新しいワークシートに作成されます。番号 1 つ 10 を挿入します。また、番号ごとの対応の平方根。Create_Square_Root_Tableマクロ、テーブルを作成します。1 から 10 までの数値を反復処理し、解決するためにForループを使用して、対象のセルに、平方根のモデルの数に一致する値をイテレーションです。次のコードは、 Create_Square_Root_Tableマクロについて説明します。
    Sub Create_Square_Root_Table()

    ' Add a new worksheet to the workbook.
    Set w = Worksheets.Add

    ' Put the value 2 in cell C1 and the formula =C1^2 in cell C2.
    w.Range("C1").Value = 2
    w.Range("C2").Formula = "=C1^2"

    ' A loop that will make 10 iterations, starting with the number 1, 
    ' and finishing at the number 10.
    For i = 1 To 10

        ' Set the Solver parameters that indicate that Solver should
        ' solve the cell C2 for the value of i (where i is the number
        ' of the iteration) by changing cell C1.
        SolverOk SetCell:=Range("C2"), ByChange:=Range("C1"), _
            MaxMinVal:=3, ValueOf:=i

        ' Do not display the Solver Results dialog box.
        SolverSolve UserFinish:=True

        ' Save the value of i in column A and the results of the 
        ' changing cell in column B.
        w.Cells(i, 1) = i
        w.Cells(i, 2) = Range("C1")

        ' Finish and discard the final results.
        SolverFinish KeepFinal:=2

    Next

    ' Clear the range C1:C2
    w.Range("C1:C2").Clear

    End Sub

図 4 に示す表は、 Create_Square_Root_Tableマクロを生成します。

図 4。Create_Square_Root_Tableマクロによって生成される出力

元に戻す画像を拡大する
図 4。によって生成された出力、Create Square Root Table マクロ


制約を使って作業する方法

内容上の制約の 1 つ以上の制約をします。セルです。モデルは、1 つまたは複数の制約があります。拘束条件セットでは、一連の特定の値の組み合わせを削除するという不等式の設定します。ソリューションからの意思決定変数をします。たとえば、制約可能性があります。1 つのセルは 0 より大きくなるし、もう 1 つのセルが含まれているのみを必要とします。整数値。

この時点で既に述べた、平方根モデルすべての制約がない単純なモデルです。図 5 を示しています。制約を使用するモデル。このモデルの目的は、最適なを検索すること製品の最大の利益の組み合わせです。

図 5。製品の組み合わせ利益率の減少に

元に戻す画像を拡大する
図 5。製品の組み合わせで利益率の減少


たとえば、次のように、企業のテレビを製造するいますと、ステレオ、スピーカー、および、共通の部品在庫の電源装置を使用して、スピーカーのコーンというように。部分に限定しています。ことが目的構築するための製品の最も収益性の高い組み合わせを決定します。単位あたりの利益[奨励金の追加価格をロードする必要があるためボリュームの減少、ディストリビューション チャネルです。適切なコリジョンの指数は 0.9 です。この指数します。製品の範囲の G11:I11 で、利益を計算するために使用。

を目標は、最大の利益 (セル G14) を見つけることです。使用する値最大の利益はをビルド単位数を変更します。をG9:G11 の範囲は、このモデルの変化させるセルを表します。唯一の制約使用部品数が、ある部分の数以内です。手の形にします。Microsoft Excel ソルバーを使えば、この制約が E3:E7 として表示されます。<=B3:B7. if="" you="" were="" to="" build="" this="" microsoft="" excel="" solver="" model="" interactively,="" the="" microsoft="" excel="" solver="" parameters="" would="" look="" similar="" to="" those="" that="" are="" in="" figure="" 6.=""></=B3:B7.>

図 6。Microsoft Excel ソルバーのパラメーターを製品の組み合わせモデルの利益率の減少に

元に戻す画像を拡大する
図 6。Microsoft Excel ソルバー パラメーター製品の組み合わせモデルの利益率の減少に


作成するのには製品の組み合わせモデルの利益幅の減少を解決する、使用する、SolverAdd関数だけが、Microsoft Excel ソルバー: VBA 関数新しい関数前に説明しました。SolverAdd関数は、モデルに制約を追加します。SolverAdd関数を実行する] をクリックします。 追加 ボタンが [ソルバー: パラメーター ダイアログ ボックス。をSolverAdd関数は、次の構文があります。
SolverAdd (CellRef、関係、適応できる値)
SolverAdd関数の構文は、次の情報を説明します。
  • CellRefの左側にあるを形成する 1 つまたは複数のセルを参照します。制約です。
  • 関係では左側と右側の間の比較の関係制約。
  • 関係は、1 〜 5 の例を次のように値を指定できます。
    • 値が 1 以上 (以下です。<>
    • 値 2 は「等しい」(=)。
    • 3 の値より大きいかそれ以上 (> =)。
    • 値 4 は整数です。
    • 5 の値をバイナリ (0 または 1 の値) です。
  • 適応できる値の右側にあるを形成する 1 つまたは複数のセルを参照します。constraint.* *
* * SolverAdd関数の適応できる値の引数のセル範囲を指定する場合は、注意してくださいかどうか、参照相対パスまたは絶対です。一般的には、絶対を指定する必要があります。適応できる値の引数を参照します。しかし、適応できる値を相対参照を指定する場合は、参照は、目的セルと作業中のセルを基準にしてなることを認識します。

メモ Microsoft Excel では、バージョン 5.0 および 7.0 は、r1c1 形式の表記法を使用します。セルまたはセル範囲を適応できる値の引数を指定します。対照的に、Microsoft Excel 97 では、A1 参照形式を使用します。適応できる値を指定するのには表記法。

図 7。関連付けられているフィールドをSolverAdd引数

元に戻す画像を拡大する
 図 7。関連付けられているフィールドSolverAdd 引数


Diminishing での製品の組み合わせモデルが生成するMaximum_Profitマクロ返しますのモデルです。このマクロは、次のような関数や引数を実行します。

  • ソルバー関数、目的セルを最大値に設定し、変更するセルを指定します。
  • SolverAdd関数は、モデルに制約を追加します。
  • 表示せずに、ソルバーが解決される、ソルバー: 探索結果 ダイアログ ボックス。
  • SolverFinish関数がワークシートに最終結果を返します。
次のコードを記述するMaximum_Profitマクロを。
    Sub Maximum_Profit()

    ' Set up the parameters for the model.
    ' Determine the maximum value for the sum of profits in cell G14
    ' by changing the number of units to build in cells G9:I9.
    Solverok setcell:=Range("G14"), maxminval:=1, _
        bychange:=Range("G9:I9")

    ' Add the constraint for the model. The only constraint is that the
    ' number of parts used does not exceed the parts on hand-- 
    ' E3:E7<=B3:B7
    SolverAdd CellRef:=Range("E3:E7"), Relation:=1, _
        FormulaText:="$B$3:$B$7"

    ' Do not display the Solver Results dialog box.
    SolverSolve UserFinish:=True

    ' Finish and keep the final results.
    SolverFinish KeepFinal:=1

    End Sub

メモ Microsoft Excel では、バージョン 5.0 および 7.0 は、r1c1 形式の表記法を使用します。適応できる値の引数を指定のセルまたはセル範囲を指定します。対照的に、Microsoft Excel 97 では、A1 参照形式を使用します。適応できる値を指定するのには表記法。

Maximum_Profitマクロを実行すると、Microsoft Excel ソルバーの 160 の TV セット、200 の構築解決策を見つけることステレオ、および 80 スピーカーが最大の利益の 14,917 ドル。

変更して制約を削除する方法

モデルの制約をプログラムによって変更することができますか削除します。制約は、 CellRef関係の引数によって識別されます。

プログラムを使用して、既存を変更するのには制約は、 SolverChange関数を使用します。SolverChangeの構文を次に示します機能:
SolverChange (CellRef、関係、適応できる値)
SolverChange関数の引数であることに注意してください。SolverAdd関数を使用するように同じです。

必要に応じ適切なコリジョンのモデルと製品の組み合わせの制約を変更するのにはSolverChange関数を使用します。例は、現在の制約には、指定された使用部品数が以下と同じことです、(E3:E7 の手の部分の数<= b3:b7).="" if="" you="" want="" to="" change="" this="" constraint="" so="" that="" the="" number="" of="" parts="" used="" is="" less="" than="" or="" equal="" to="" the="" number="" of="" parts="" projected="" (number="" of="" parts="" on="" hand="" plus="" number="" of="" parts="" ordered).="" this="" new="" constraint="" would="" look="" like="" e3:e7=""></=><= d3:d7.="" the="" following="" macro="" would="" change="" the="" existing="" constraint=""></=><=B3:B7 to="" e3:e7=""></=B3:B7><= d3:d7="" and="" solve="" for="" a="" solution.=""></=>

次のコードは、 Change_Constraint_and_Solveマクロについて説明します。
    Sub Change_Constraint_and_Solve()

    ' Change the constraint.
    SolverChange CellRef:=Range("E3:E7"), Relation:=1, _
       FormulaText:="$D$3:$D$7"

    ' Return the results and display the Solver Results dialog box.
    SolverSolve UserFinish:=False

    End Sub

制約は、 CellRefリレーションの引数で識別されるため、 SolverChange関数を使用してのみ適応できる値の引数は、制約を変更できます。CellRefの関係は、既存の制約が一致しない場合は、削除する必要があります、制約と、変更後の制約を追加します。制約を削除するにはSolverDelete関数。SolverDelete関数の構文は次のとおりです。

SolverDelete (CellRef、関係、適応できる値)

SolverDelete関数の引数であることに注意してください。それらは同じSolverAddSolverChange関数を使用します。

次のマクロを削除し、制約を追加する方法を示しています。この例では、 Change_Constraint_and_Solve2マクロ E3:E7 の制約を削除します。<=B3:B7 from="" the="" product="" mix="" with="" diminishing="" returns="" model="" and="" adds="" a="" new="" constraint.="" the="" new="" constraint="" is="" just="" a="" modification="" of="" the="" original="" constraint,="" where="" the="" left="" and="" right="" sides="" of="" the="" constraint="" are="" reversed.=""></=B3:B7>

次のコードは、 Change_Constraint_and_Solve2マクロについて説明します。
    Sub Change_Constraint_and_Solve2()

    ' Reverse the left and right sides of the constraint...
    ' Delete the constraint E3:E7<=B3:B7 and add the
    ' constraint B3:B7>=E3:E7.
    SolverDelete CellRef:=Range("E3:E7"), Relation:=1, _
        FormulaText:="$B$3:$B$7"
    SolverAdd CellRef:=Range("B3:B7"), Relation:=3, _
        FormulaText:="$E$3:$E$7"
    
    ' Return the results and display the Solver Results dialog box.
    SolverSolve UserFinish:=False
    
    End Sub

メモ Microsoft Excel では、バージョン 5.0 および 7.0 は、r1c1 形式の表記法を使用します。適応できる値の引数を指定のセルまたはセル範囲を指定します。対照的に、Microsoft Excel 97 では、A1 参照形式を使用します。適応できる値を指定するのには表記法。

ロードし、モデルを保存する方法

保存すると、ブックの最後のパラメーターは、指定した、 [ソルバー: パラメーター ダイアログ ボックスで保存します。ブック。このため、ブックを開くと、パラメーターは、同じ場合、前回ブックを保存します。

定義することができます。複数ワークシートの問題をします。それぞれの問題のセルで構成されていますし、入力の制約が ソルバー パラメーター と、 [ソルバー: オプション ダイアログ ボックスです。最後の問題だけを保存するため明示的に保存しない限り、ワークシート、その他の問題をすべて失われますそれら。それらを保存するのをクリックしてください。 [モデルを保存します。 続いて ソルバーオプション ダイアログ ボックス。同様に、場合を復元するのには、これまで保存したパラメーター] をクリックします。 モデルの読み込み 続いて ソルバーオプション ダイアログ ボックス。

ソルバー モデルの範囲に保存されています。ワークシートのセルにします。範囲内の最初のセルに数式が含まれています、対象のセルです。2 番目のセル範囲にはを識別する数式が含まれています。モデルの変化させるセル。範囲内の最後のセルに配列が含まれています。設定オプションを表すには [ソルバー: オプション ダイアログボックスです。2 番目のセルと末尾のセルまでのセルに数式が含まれています。モデルの制約を表します。

図 8 示しています、従業員のスケジュールのモデルです。小規模の機能することを前提としていますメーカー。各従業員の時給の支払、数の次のテーブルを示します時間は、スケジュールされている、および各従業員の単位数は、予想することができます。1 時間になります。特定のクォータ数を達成することが目的労働力のコストを最小限に抑えながらユニットを生成します。

図 8。従業員スケジュー リング モード
l
元に戻す画像を拡大する
 図 8。従業員のスケジューリングモデル


2 つの他の要素 (または制約) を使用する必要があります。考慮してくださいすることができますすべて 1 つの従業員の作業時間の最小/最大数は、作成する単位の数。指定された週には、必要がある場合3975 生産単位と、30 から 45 の間には、各従業員をします。時間 Microsoft Excel ソルバー: パラメーターには、次のように説明したようになりますテーブル:

元に戻す全体を表示する
パラメーターセル範囲説明
目的セル $D$ 12 労働力のコストです。
変化させるセル $C$ 2:$ C$ 8 あたりの作業時間従業員。
制約 $C$ 2:$ C$ 8<=></=> 最大値従業員 1 人あたりの時間は、45 です。
$C$ 2:$ C$ 8 > 30 = 最小の時間単位従業員は 35 です。
$G$ 12 = 3975 単位数 3975 です。


お客様の目標に最適な労働力のコストを解決するためには、毎週、毎週、各モデルを保存して、週ごとのロードできるようにするには必要なときはモデルです。

マクロで、Microsoft Excel ソルバー パラメーターのモデル保存してSolverSaveSolverLoad関数を使用してロードすることができますそれぞれ。SolverSave関数とSolverLoad関数は、次があります。構文:

SolverSave (セル)

SolverLoad (かまいません)

SolverSave SolverLoad関数引数を 1 つだけ、セルかまいません引数がそれぞれあります。これらの引数は、ワークシート上の範囲を指定します。どこのモデル情報が格納されます。

次のNew_Employee_Scheduleマクロ、説明方法を作成するのを解決するのには、モデルを保存するのにはユーザーの入力をします。ユーザーは、モデル数の日付を入力しようとするとユニットを作成するのには、従業員 1 人あたりの時間の最小値と最大値の数。これらのデータから、モデルの作成に使用します。モデルを解決し、ユーザーが入力を保存します。

次のコードは、 New_Employee_Scheduleマクロについて説明します。
    Sub New_Employee_Schedule()
    
    ' Prompt the user for the date of the model, the units to produce,
    ' and the maximum and minimum number of hours per employee.
    ModelDate = Application.InputBox( _
       Prompt:="Date of Model:", Type:=2)
    Units = Application.InputBox( _
       Prompt:="Projected Number of Units:", Type:=1)
    MaxHrs = Application.InputBox( _
       Prompt:="Maximum Number of Hours Per Employee:", Type:=1)
    MinHrs = Application.InputBox( _
       Prompt:="Minimum Number of Hours Per Employee:", Type:=1)
    
    ' Clear any previous Solver settings.
    SolverReset
    
    ' Set the target cell, D12, to a minimum value by changing
    ' the range, C2:C8.
    SolverOk SetCell:=Range("$D$12"), MaxMinVal:=2, _
       ByChange:=Range("C2:C8")
    
    ' Add the constraint that number of hours worked <= MaxHrs.
    SolverAdd CellRef:=Range("C2:C8"), Relation:=1, FormulaText:=MaxHrs
    
    ' Add the constraint that number of hours worked >=MinHrs.
    SolverAdd CellRef:=Range("C2:C8"), Relation:=3, FormulaText:=MinHrs
    
    ' Add the constraint that number of units produced = Units.
    SolverAdd CellRef:=Range("G12"), Relation:=2, FormulaText:=Units
    
    ' Solve the model and keep the final results.
    SolverSolve UserFinish:=True
    SolverFinish KeepFinal:=1
    
    ' Save the input values for ModelDate, MaxHrs, MinHrs, and Units
    ' in columns I:L.
    Set ModelRange = Range("I2:R2").CurrentRegion.Offset( _
       Range("I2:R2").CurrentRegion.Rows.Count).Resize(1, 1)
    ModelRange.Resize(1, 4) = Array("'" & Format(ModelDate, "m/d/yy"), _
       Units, MaxHrs, MinHrs)
    
    ' Save the model parameters to the range M:R in the worksheet.
    SolverSave SaveArea:=ModelRange.Offset(, 4).Resize(1, 6)
    
    End Sub
メモ Microsoft Excel では、バージョン 5.0 および 7.0 は、r1c1 形式の表記法を使用します。適応できる値の引数を指定のセルまたはセル範囲を指定します。対照的に、Microsoft Excel 97 では、A1 参照形式を使用します。適応できる値を指定するのには表記法。

図 9 に示しますは、モデルを保存情報では、ワークシートに表示されます。

図 9。モデル情報New_Employee_Schedule マクロを保存します。

元に戻す画像を拡大する
図 9。モデルの情報を保存します。New Employee Schedule マクロで


New_Employee_Scheduleマクロがワークシートにそれぞれの新しいモデルを保存します。Load_Employee_Scheduleマクロはこれら保存されているモデルのいずれかを読み込むことができます。マクロを表示、ユーザーがモデルにロードし、検索列をモデルの日私は。場合Load_Employee_Scheduleマクロ対応のモデルを読み込み、それを解決モデルの日が見つかりましたが、最終的な結果を保持します。

次のコードは、 New_Employee_Scheduleマクロについて説明します。
    Sub Load_Employee_Schedule()
    
    ' Prompt for the date of the model. 
    ModelDate = Application.InputBox( _
       Prompt:="Date of Model to Load:", Type:=2)
    
    ' Locate the date in column I.
    Set DateRange = Range("I2").CurrentRegion.Resize(, 1)
    r = Application.Match(ModelDate, DateRange, 0)
    
    If IsError(r) Then
        ' Display a message if the model date is not found
        MsgBox "Cannot find a model with the date " & ModelDate
    Else
        ' If the model date is found, load the model into Solver,
        ' solve the model, and keep the final results.
        SolverLoad LoadArea:=DateRange.Offset(r - 1, 4).Resize(1, 6)
        SolverSolve UserFinish:=True
        SolverFinish KeepFinal:=1
    End If
    
    End Sub
New_Employee_Scheduleマクロは、 SolverReset関数をについて説明します。SolverReset関数を使用してすべてのセルの選択範囲と制限を削除するのには [ソルバー: パラメーター ダイアログ ボックスおよびすべての設定をリセットするのにはSolverReset関数がありません。引数です。

Microsoft Excel ソルバーの詳細についてを検索する方法

Microsoft Excel ソルバーを使用する方法について、次のリソースを提供します。アドインします。

  • ソルバーの特定のメッセージについてを参照してください。Frontlineシステム.
  • 読み取り可能な構築のヒントを管理しやすいモデルを参照してください。Frontlineシステム.
  • 制約のソルバーの詳細についての制限し、は、マイクロソフト サポート技術情報の資料を参照する次の資料番号をクリックしています。
    75714制約のソルバーの制限
  • いくつかの例については、Microsoft Excel ソルバー アドインを使用します。Excel は、Solvsamp.xls のサンプル ファイルを参照してください。
  • 以下が含まれているサンプル ファイルの既定の場所です。Microsoft Excel 97。
    \Program Files\MicrosoftOffice\Office\Examples\Solver\SolvSamp.xls
  • 以下が含まれているサンプル ファイルの既定の場所です。Microsoft Excel 7.0。
    \MSOffice\Excel\Examples\Solver\SolvSamp.xls
  • 以下が含まれているサンプル ファイルの既定の場所です。Microsoft Excel 5.0。
    \Excel\Examples\Solver\SolvSamp.xls

アルゴリズムと Microsoft Excel ソルバーを使用する方法の詳細を表示する方法

Microsoft Excel ソルバーが一般化された短縮グラデーションに使用します。大学の Leon Lasdon によって開発された (GRG2) 非線形最適化コードテキサス州オースティンとアラン Waren、クリーブランド州立大学。

Microsoft Excel ソルバーで使用されるアルゴリズムの詳細については、マイクロソフト サポート技術情報の資料を参照する次の資料番号をクリックします。
82890ソルバーの使用削減に一般化


線形および整数問題 simplex 法を使用します。変数、および枝連結方法の境界を実装ジョン ・ ワトソンと Dan Fylstra、Frontline Systems, Inc.詳細についてはソルバーでは、取引先担当者が使用する内部解決プロセス。

Frontline Systems, Inc.
P.O. Box 4288
Incline Village, NV 89450-4288 
(702) 831-0300
Web site: http://www.frontsys.com
Electronic mail: info@frontsys.com 


Microsoft Excel ソルバーの選択プログラム コードである著作権の 1990年、1991年、1992、およびフロント エンドのシステムによって 1995Inc. の部分最適方法, Inc. によって著作権 1989年です。

メモ をMicrosoft Excel ソルバーを追加この資料に記載されてに「現状のまま」提供してしまうすべての状況で使用することができることを保証します。Microsoft をサポートしていますがインストールおよび既存の機能をこれに専門家をすることができます。アドインが、新しい機能を提供するアドインが変更されません。

保証の免責。ソフトウェアが提供されています"として-は、"いかなる種類の保証なしこのソフトウェア製品の使用は自己責任であります。

プロパティ

文書番号: 843304 - 最終更新日: 2013年7月1日 - リビジョン: 4.0
この資料は以下の製品について記述したものです。
  • Microsoft Excel 97 Standard Edition
キーワード:?
kbhowto kbmacroexample kberrmsg kbaddin kbvba kbprogramming kbinfo kbmt KB843304 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:843304
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com