Jak lze vytvořit makra jazyka Visual Basic pomocí Řešitele v aplikaci Excel v aplikaci Excel 97

Překlady článku Překlady článku
ID článku: 843304 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje, jak použít Řešitele v aplikaci Microsoft Excel v aplikaci Microsoft Excel 97 k vytváření maker jazyka Microsoft Visual Basic. Řešitel aplikace Microsoft Excel je doplněk aplikace Microsoft Excel.

Kromě toho tento článek obsahuje informace o vytváření maker, Návrh makra a jak pracovat s omezeními makra. Tento článek také popisuje algoritmus a metody, které jsou používány Řešitel aplikace Microsoft Excel. Následující seznam obsahuje všechna témata popsanou v článku.

ÚVOD

Tento článek obsahuje informace o aplikaci Microsoft Excel Řešitel.

Další informace

Popis Řešitele v aplikaci Microsoft Excel

Řešitel aplikace Microsoft Excel je aplikace Microsoft Excel, který pomáhá doplňku Řešitel aplikace Microsoft Excel určit optimální hodnotu pro vzorec v určitém cílové buňky na listu aplikace Microsoft Excel. Řešitel aplikace Microsoft Excel upraví hodnoty jiných buňky, které se vztahují k cílové buňky pomocí rovnice. Poté, co sestavit rovnice a definují sadu parametrů nebo omezení proměnné v rovnici Řešitel aplikace Microsoft Excel se pokusí různá řešení dospět odpověď, která splňuje všechny omezující podmínky. Řešitel aplikace Microsoft Excel používá následující prvky "řešení" rovnice:
  • Cílová buňka -Cílem je cílové buňky. Je-li na buňku v listu modelu, který bude minimalizován, maximalizované nebo nastavit na určitou hodnotu.
  • Měněné buňky -Měněné buňky jsou proměnné rozhodnutí. Tyto buňky ovlivňují hodnotu cílové buňky. Tyto buňky jsou změnit Řešitel aplikace Microsoft Excel nalézt optimální řešení pro cílové buňky.
  • Omezení -Omezení jsou omezení obsahu buněk. Pro například jednu buňku v listu modelu může být omezeno na celočíselné hodnoty, zatímco jiné buňky může být omezeno na je menší, než dané hodnoty.
Můžete automatizovat vytváření a manipulace s modely Řešitele v aplikaci Microsoft Excel podle pomocí aplikace Microsoft Visual Basic pro makro Applications (VBA). Tento článek popisuje, jak používat makro jazyka VBA pomocí funkce Řešitel aplikace Microsoft Excel Aplikace Microsoft Excel 97. Tento článek předpokládá, že jste obeznámeni s jazykem VBA a editoru jazyka Visual Basic pro aplikaci Microsoft Excel 97. Příklady, které jsou použity v tomto článku jsou k dispozici ke stažení na následujícím webu společnosti Microsoft:
http://download.microsoft.com/download/excel97win/solverex/1.0/WIN98Me/en-us/SolverEx.exe
Poznámka: Můžete také použít makra a příklady, které jsou popsány v tomto článek v aplikaci Microsoft Excel verze 5.0 a 7.0.

Použití funkcí Řešitel aplikace Microsoft Excel makra VBA

Použití funkcí doplňku Řešitel aplikace Microsoft Excel makra VBA, které doplněk, musí odkazovat z projektu VBA sešitu, obsahuje makra. Pokud není doplněk Řešitel aplikace Microsoft Excel, zobrazí následující chyba kompilace při pokusu o spuštění makra:
Chyba kompilace: Sub nebo Function není definována.
K referenční doplněk Řešitel aplikace Microsoft Excel makra v sešitu, použijte následující kroky:
  1. Otevřete sešit.
  2. V Nástroje příkazMakroa klepněte na tlačítko Editor jazyka Visual Basic.
  3. V Nástroje nabídky, klepněte na tlačítkoOdkazy.
  4. V Dostupné odkazy položku Vyberte Solver.xls Zaškrtněte políčko a klepněte na tlačítko OK.

    Poznámka: Pokud nevidíte Solver.xls v Dostupné odkazyKlepněte na položku Procházet. V Přidat Odkaz Dialogové okno, vyhledejte a vyberte soubor Solver.xla a poté Klepněte na tlačítko Otevřít. Soubor Solver.xla je obvykle najít v Podsložka C:\Program Files\Microsoft Office\Office\Library\Solver.
Nyní jste připraveni použít funkce Řešitel aplikace Microsoft Excel Makro jazyka VBA.

Jak navrhnout makro jazyka VBA, který vytváří a byl odstraněn jednoduchého modelu Řešitele v aplikaci Microsoft Excel

Ačkoli Řešitel aplikace Microsoft Excel nabízí mnoho funkcí, následující tři funkce jsou základní, vytváření a řešení modelu:
  • Na SolverOK funkce
  • Na SolverSolve funkce
  • Na SolverFinish funkce

Funkce SolverOK

Na SolverOK Funkce definuje základní model Řešitel aplikace Microsoft Excel. Na SolverOK funkce je obecně první funkce, který použijete k vytvoření modelu Řešitele v aplikaci Microsoft Excel. Na SolverOK funkce je rovnocenné klepnutí Řešitel v Nástrojenabídky a zadáním možnosti, které jsou v Parametry ŘešiteleDialogové okno. Následuje syntaxe SolverOK funkce:
SolverOK (SetCell, MaxMinVal, ValueOf, ByChange)
Následující informace popisují syntaxi SolverOK funkce:
  • SetCell Určí cílovou buňku.
  • MaxMinVal zda chcete vyřešit cílové buňky odpovídá maximální hodnota (1), minimální hodnota (2) nebo konkrétní hodnotu (3).
  • ValueOf Určuje hodnotu, ke které je odpovídající cílové buňky. Pokud jste nastavit MaxMinVal 3 je třeba zadat tento argument. Pokud nastavíte MaxMinVal 1 nebo 2 můžete tento argument vynechat.
  • ByChange Určuje buňku nebo oblast buněk, která bude změněna.
Obrázek 1 associates argumenty SolverOK pracovat Parametry v Parametry Řešitele Dialogové okno.

Obrázek 1. Parametry, které jsou přidruženy SolverOKargumenty

Zmenšit tento obrázekZvětšit tento obrázek
 Obrázek 1. Parametry, které jsou přiřazeny

		  s argumenty SolverOK


Funkce SolverSolve

Na SolverSolve funkce byl vyřešen pomocí parametrů modelu zadaného SolverOK funkce. Provádění SolverSolve je ekvivalentní funkce klepnutí Řešení v Parametry Řešitele Dialogové okno. Následuje syntaxe SolverSolve funkce:
SolverSolve (UserFinish, ShowRef)
Následující informace popisují syntaxi SolverSolve funkce:
  • UserFinish Určuje, zda má uživatel dokončit řešení model.

    K vrácení výsledků bez zobrazení Řešitel Výsledky dialogovém okně nastavte tento argument na PRAVDA. K vrácení výsledků a zobrazí Výsledky řešení dialogovém okně nastavte tento argument hodnota FALSE
  • ShowRef identifikuje makra, je volána, když Řešitel aplikace Microsoft Excel, vrátí Pomocný roztok.

    Na ShowRef argument by měly používat pouze v případě, že PRAVDA je předán StepThru argument SolverOptions funkce.

Funkce SolverFinish

Na SolverFinish funkce označuje, co dělat s výsledky, a jaký typ kontingenční sestavy, vytvořit po dokončení procesu řešení. Následuje syntaxe SolverFinish funkce:
SolverFinish (KeepFinal, ReportArray)
Následující informace popisují syntaxi SolverFinish funkce:
  • KeepFinal označuje, jak konečné výsledky. Pokud KeepFinal je 1, konečný roztok hodnoty jsou uchovávány v měněných buňkách nahrazení hodnoty. Pokud KeepFinal 2, jsou zahozeny hodnoty konečného roztoku a dřívější hodnoty jsou obnoveny.
  • ReportArray Určuje pole označující typ sestavy Microsoft Aplikace Excel vytvoří, jakmile je dosaženo řešení. Pokud ReportArray je nastavena na 1, vytvoří aplikace Microsoft Excel sestavu odpovědí. Pokud nastavena na 2, Microsoft Excel vytvoří sestavu citlivost a nastavit 3 společnosti Microsoft Aplikace Excel vytvoří sestavu limity. Další informace o těchto zpráv naleznete v tématu "Generování sestav pro řešení"oddíl.
Obrázek 2. Možnosti výsledky Řešitel aplikace Microsoft Excel, které jsou spojeny s SolverFinish argumenty

Zmenšit tento obrázekZvětšit tento obrázek
 Obrázek 2. Výsledky Možnosti Řešitele

		  které jsou spojeny s argumenty SolverFinish


Tento článek popisuje, jak vytvořit interaktivní jednoduchého modelu Řešitele v aplikaci Microsoft Excel. Prvním krokem je Vytvoření modelu listu. List bude obsahovat některé buňky a nejméně jednu buňku, která obsahuje vzorec. Tento vzorec závisí na druhé buňky v listu. Po nastavení listu, klepněte na tlačítko Řešitel v Nástroje nabídka. VParametry Řešitele Dialogové okno zadejte cílovou buňku, hodnotu, která Při řešení problémů pro oblast buněk, které budou změněny, a omezení. Klepněte na tlačítko Řešení spuštění procesu řešení. Po Řešitel aplikace Microsoft Excel nalezl řešení, výsledky se zobrazí v listu a Řešitel aplikace Microsoft Excel Zobrazí okno zprávy s výzvou, chcete-li zachovat konečné výsledky nebo Chcete-li je zahodíte. Klepnete-li jednu z těchto možností, dokončí Řešitel aplikace Microsoft Excel.

Obrázek 3 znázorňuje jednoduchý model, který můžete vytvořit pomocí těchto kroků.

Obrázek 3. Jednoduchý model: model druhá odmocnina

Zmenšit tento obrázekZvětšit tento obrázek
 Obrázek 3. A

		  Jednoduchý model: model druhá odmocnina


V tomto příkladu změnit buňky A1, která obsahuje vzorec, = A1 ^ 2 na hodnotu, která bude Buňka A2 rovna hodnotě 50. Jinými slovy druhé odmocniny 50. V modelu odmocninu neexistují žádná omezení. Na Find_Square_Root Při použití makra následující úkoly:
  • Nastavuje modelu, který vyřeší hodnota buňky A2 pro hodnotu 50 Změna hodnoty buňky A1.
  • Model vyřešen.
  • Konečné výsledky uloží do listu bez zobrazení Výsledky řešení Dialogové okno.
Toto jednoduché makro, vytvoří model Řešitel aplikace Microsoft Excel a byl odstraněn Chcete-li jej bez zásahu uživatele. Popisuje následující kód Find_Square_Root Makro:
    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
Na Find_Square_Root2 makro, je upravenou verzí Find_Square_Root makro. Pokud použijete InputBox funkce Find_Square_Root2 Makro vás vyzve k zadání hodnota, kterou chcete vyřešit cílové buňky. Jakmile vstupní hodnoty, na Find_Square_Root2 makro nastaví jako hodnota tohoto parametru SolverOKvalueOf argument byl problém vyřešen, uloží výsledky v proměnné Druhá odmocnina a roztok se odstraní a obnoví hodnoty v listu do původního stavu. V podstatě Find_Square_Root2 Makro ilustruje, jak lze uložit výsledky v jedné nebo více proměnné a pak obnovit změny buňky na původní hodnotu.

Popisuje následující kód Find_Square_Root2 Makro:
    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

Generování sestav pro řešení

Řešitel aplikace Microsoft Excel nabízí několik typů sestav, které popisují, jak se výsledky, změnit a jak blízko omezení obdrželi kritické hodnoty. Každá zpráva je umístěn na samostatném listu v sešitu. Tyto následující typy zpráv že Řešitel aplikace Microsoft Excel nabízí:
  • Sestava odpovědí -Sestava odpovědí uvádí cílové buňky a měněné buňky s odpovídajícími původními a výslednými hodnotami, omezující podmínky, a Chcete-li zobrazit informace o omezeních.
  • Citlivost sestavy -Citlivost sestava obsahuje informace o citlivosti řešením je k malým změnám ve vzorci pro cílové buňky.
  • Sestava omezení -Omezení zpráva uvádí cílové buňky a měněné buňky s jejich hodnot, horních a dolních mezí a cílové hodnoty.
Chcete-li vytvořit sestavy pro modely, zadejte matici hodnot pro ReportArray argument SolverFinish funkce. Další informace o na ReportArray argument, naleznete "SolverFinish (KeepFinal, ReportArray)"oddíl. Například pokud chcete generovat sestavy limity pro model, Find_Square_Root2 Vytvoří makro a byl odstraněn, změna SolverFinish funkce v makra tak, že vypadá podobně jako následující příklad kódu:
    SolverFinish KeepFinal:=2, ReportArray:= Array(3)
Chcete-li generovat více sestav, upravit SolverFinish funkce tak, že vypadá podobně jako následující ukázkový kód:
    SolverFinish KeepFinal:=2, ReportArray:= Array(1,2)

Použití funkcí aplikace Microsoft ExcelSolver v makru opakování

V mnoha situacích je vhodné mít řešení Řešitel aplikace Microsoft Excel Cílová buňka není pro více hodnot. Obecně toho lze dosáhnout pomocí jednoho opakování struktur, které jsou k dispozici funkce jazyka VBA.

Na Create_Square_Root_Table makru je ukázáno, jak funguje Řešitel aplikace Microsoft Excel v makru opakování. Na Create_Square_Root_Tablemakro vytvoří tabulku do nového listu. Vloží čísla jeden až deset a každé číslo odpovídající odmocninu. Na Create_Square_Root_Table makro vytvořené tabulky pomocí Pro smyčky k iterování čísla 1 až 10 a řešení cílové buňky v modelu odmocninu hodnotu, která odpovídá počtu iterace. Popisuje následující kód Create_Square_Root_Table Makro:
    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

Na Create_Square_Root_Table Makro vygeneruje tabulku znázorněn na obrázku 4.

Obrázek 4. Výstup, který je vygenerován Create_Square_Root_Table Makro

Zmenšit tento obrázekZvětšit tento obrázek
Obrázek 4. Výstup, který je vygenerován

		  Makro Create Square Root Table


Jak pracovat s omezeními

Omezení je omezení obsah jedné nebo více buňky. Vzor může mít jedno nebo více omezení. Je sada omezení nastavit nerovností nebo sadu equalities, které odebrat určité kombinace hodnot pro proměnné rozhodnutí z roztoku. Například může omezení vyžadovat, aby jedna buňka být větší než nula a jiné buňka obsahovat pouze celočíselná hodnota.

Druhá odmocnina model, který jsme projednat až do tohoto okamžiku je jednoduchý model, který neobsahuje žádné omezení. Obrázek 5 znázorňuje model, který používá omezení. Účelem tohoto modelu je najít optimální kombinace produktů pro maximální zisk.

Obrázek 5. Skladba produktů s tím snížila ziskové rozpětí

Zmenšit tento obrázekZvětšit tento obrázek
Obrázek 5. Skladba produktů s

		  oji ziskové rozpětí


Například společnost vyrábí televizory, přehrávačů a reproduktory a používá běžné Inventář součástek dodávek energie, reproduktor hlávky atd. Části jsou omezené dodávky. Vaším cílem Určete nejziskovější sortiment produktů k sestavení. Váš zisk na kus snižuje se svazkem, protože další cenové pobídky jsou zapotřebí pro načtení distribuční kanál. Diminishing Vrátí exponent je 0,9. Je tento činitel slouží k výpočtu zisku podle výrobků v rozsahu G11:I11.

Vaše cílem je nalézt maximální zisk (buňka G14). Hodnoty, které bude Změňte maximální zisk jsou počet jednotek, které vytváříte. Na rozsah G9:G11 představuje v tomto modelu měněné buňky. Vaše jediné omezení je, že počet částí pomocí nesmí překročit počet částí máte na skladě. S Řešitel aplikace Microsoft Excel zobrazí se toto omezení jako 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=""></=b3:b7.>

Obrázek 6. Parametry Řešitele v aplikaci Microsoft Excel Skladba produktů s oji ziskové rozpětí modelu

Zmenšit tento obrázekZvětšit tento obrázek
Obrázek 6. Parametry Řešitele v aplikaci Microsoft Excel

		  sortiment výrobků s oji ziskové rozpětí modelu


Vytvořit a vyřešit sortiment výrobků s modelem oji ziskové rozpětí, budete používat Nová funkce SolverAdd Funkce vedle funkce aplikace Microsoft Excel Řešitele VBA, které byly popsané výše. Na SolverAdd funkce přidá omezení k modelu. Provádění SolverAdd funkce je rovnocenné klepnutí Přidat tlačítko na Parametry Řešitele Dialogové okno. Na SolverAdd funkce má následující syntaxi:
SolverAdd (Odkaz_na_buňku vztahu, FormulaText)
Následující informace popisují syntaxi SolverAdd funkce:
  • Odkaz_na_buňku jedna nebo více buněk, které tvoří na levé straně odkazuje omezení.
  • Vztah je aritmetický vztah mezi levé a pravé strany omezení.
  • Vztah může být hodnota mezi 1 a 5, jako v následujícím příkladu:
    • Hodnota 1 je menší než nebo rovno)<>
    • Vaue 2 je rovno (=).
    • Hodnota 3 je větší než nebo rovno (> =).
    • Hodnota 4 je celé číslo.
    • Binární soubor (hodnota nula nebo jedna) je hodnota 5.
  • FormulaText jednu nebo více buněk, které tvoří pravé straně odkazuje CONSTRAINT.* *
** Při zadání rozsahu buněk FormulaText argument SolverAdd funkce, poznamenejte si, zda odkaz je relativní nebo absolutní. Obecně je třeba zadat absolutní pro odkaz FormulaText argument. Však zadáte relativní odkazy FormulaText argument, uvědomit si, že odkaz bude vzhledem k cílové buňky a není aktivní buňky.

Poznámka: V aplikaci Microsoft Excel verze 5.0 a 7.0, použijte zápis R1C1 Pokud zadáte do buňky nebo oblasti buněk s FormulaText argument. Naopak v aplikaci Microsoft Excel 97, používají a1 zápis k určení FormulaText argument.

Obrázek 7. Pole, které jsou přidruženy SolverAdd argumenty

Zmenšit tento obrázekZvětšit tento obrázek
 Obrázek 7. Pole, které jsou přidruženy

		  argumenty SolverAdd


Na Maximum_Profit makro, které generuje model pro sortiment výrobků s Diminishing Vrátí model. Toto makro provede následující funkce nebo argumenty:

  • Na SolverOK Funkce nastavuje maximální hodnotu cílové buňky a Určí buňky, můžete změnit.
  • Na SolverAdd funkce přidá omezení k modelu.
  • Na SolverSolve funkce nalezne řešení bez zobrazeníVýsledky řešení Dialogové okno.
  • Na SolverFinish Funkce listu vrátí konečné výsledky.
Popisuje následující kód pro Maximum_Profit Makro:
    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

Poznámka: V aplikaci Microsoft Excel verze 5.0 a 7.0, použijte zápis R1C1 Při zadávání buňku nebo oblast buněk s FormulaText argument. Naopak v aplikaci Microsoft Excel 97, používají a1 zápis k určení FormulaText argument.

Při spuštění Maximum_Profit makro, Řešitel aplikace Microsoft Excel bude nalézt řešení stavebních 160 televizní sad, 200 přehrávačů a 80 reproduktory pro maximální zisk z $14,917 dolarů.

Jak změnit a odstranit omezení

Omezení v modelu lze programově změnit nebo odstranit. Omezení jsou identifikovány jejich Odkaz_na_buňku a Vztah argumenty.

Programově změnit existující omezení použití SolverChange funkce. Následuje syntaxe SolverChangefunkce:
SolverChange (Odkaz_na_buňku vztahu, FormulaText)
Všimněte si, že argumenty SolverChange funkce jsou stejné těm, které se SolverAdd funkce.

Chcete-li Změna omezení sortimentu výrobků s Diminishing vrací model, který použít SolverChange funkce. Například právě omezení, je zadáno číslo použité díly je menší než nebo rovno počet částí na skladě (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=""></=>

Popisuje následující kód Change_Constraint_and_Solve Makro:
    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

Protože jsou identifikovány omezení Odkaz_na_buňku a Vztah argumenty, můžete změnit pouze FormulaText argument pro omezení pomocí SolverChange funkce. Pokud Odkaz_na_buňku a Vztah nesouhlasí existující omezení, je nutné odstranit omezení a poté přidat upravený omezení. Chcete-li odstranit omezení, použijte následující příkaz: na SolverDelete funkce. Následuje syntaxe SolverDelete funkce:

SolverDelete (Odkaz_na_buňku vztahu, FormulaText)

Všimněte si, že argumenty SolverDelete funkce jsou pomocí stejné na těch, které SolverAdd a SolverChange funkce.

Následující makro ukazuje, jak odstranit a přidat omezení. V tomto příkladu Change_Constraint_and_Solve2 Makro odstraní omezení 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=""></=b3:b7>

Popisuje následující kód Change_Constraint_and_Solve2 Makro:
    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

Poznámka: V aplikaci Microsoft Excel verze 5.0 a 7.0, použijte zápis R1C1 Při zadávání buňku nebo oblast buněk s FormulaText argument. Naopak v aplikaci Microsoft Excel 97, používají a1 zápis k určení FormulaText argument.

Jak načíst a uložit modely

Při uložení sešitu, poslední parametrů je v Parametry Řešitele Dialogové okno se ukládají s sešit. Proto když otevřete sešit, parametry jsou stejné jako při posledním uložení sešitu.

Můžete definovat více než jeden problém listu. Každý problém se skládá z buněk a omezení, které zadáte v Parametr Řešitele a Možnosti Řešitele dialogová okna. Protože je uložen pouze poslední problém s listu, budou ztraceny všechny problémy Pokud explicitně neuložíte je. Chcete-li uložit, klepněte na tlačítko Uložit Model v Řešitel Možnosti Dialogové okno. Podobně, pokud chcete obnovit dříve uložené parametry, klepněte na tlačítko Načíst Model v Řešitel Možnosti Dialogové okno.

Modely jsou uloženy v oblasti buňky na listu. Na první buňku v oblasti obsahuje vzorec pro cílové buňky. Druhé buňky v oblasti obsahuje vzorec, který identifikuje měněných buněk v modelu. Poslední buňku v oblasti obsahuje pole který představuje možnosti nastavení v Možnosti Řešitele Dialogové okno pole. Buňky mezi druhou buňku a poslední buňky obsahují vzorce která představují omezení v modelu.

Znázorňuje obrázek 8 model pro zaměstnance plánování. Předpokládá, že pracujete pro malé výrobce. Tato tabulka obsahuje každý Zaměstnanec – hodinová sazba mzdy, číslo hodiny jsou plánovány a můžete každému zaměstnanci Plánovaný počet jednotek vyrobit, do jedné hodiny. Chcete-li splňovat určité kvóty pro počet jednotky vyrobené při současné minimalizaci nákladů práce.

Obrázek 8. Zaměstnance Režim plánování
l
Zmenšit tento obrázekZvětšit tento obrázek
 Obrázek 8. Plánování zaměstnanců

		  model


Dva další faktory (nebo omezení), je nutné Zvažte jsou minimální a maximální počet hodin na jednoho zaměstnance lze pracovat a počet jednotek, které byste chtěli. Potřebujete pro zadaný týden, k výrobě 3975 jednotek a chcete každý zaměstnanec pracovat mezi 30 až 45 hodiny vypadat podobně jako uvedených v následující parametry Řešitele v aplikaci Microsoft Excel Tabulka:

Zmenšit tuto tabulkuRozšířit tuto tabulku
ParametrOblast buněk Popis
Cílová buňka $D$ 12 Náklady práce.
Měněné buňky $C$ 2:$ C$ 8 Odpracovaných hodin Zaměstnanec.
Omezení $C$ 2:$ C$ 8<=></=> Maximální hodin za zaměstnance je 45.
$C$ 2:$ C$ 8 > = 30 Minimální počet hodin za Zaměstnanec je 35.
$G$ 12 = 3975 Počet jednotek je 3975.


Vaše cíle jsou řešení pro optimální práci náklady na týdenním týdně uložte každý model a moci načíst všechny týdně model, když ji potřebujete.

V makru, Parametry Řešitele v aplikaci Microsoft Excel pro model lze uložit a načíst pomocí SolverSave a SolverLoad funkce v uvedeném pořadí. Na SolverSave a SolverLoad funkce mají následující Syntaxe:

SolverSave (SaveArea)

SolverLoad (LoadArea)

Na SolverSave a SolverLoad funkce jednotlivých mají pouze jeden argument SaveArea a LoadArea argumenty resp.. Tyto argumenty zadat oblast na listu uložení informací o modelu.

Následující New_Employee_Schedule makro, ukazuje, jak vytvořit, řešení a uložit model založený na vstupu uživatele. Uživatel je vyzván k zadání data modelu, počet jednotky pro výrobu a minimální a maximální počet hodin na jednoho zaměstnance. Tyto údaje pak slouží k vytvoření modelu. Model je možné vyřešit a potom uloží se vstup uživatele.

Popisuje následující kód New_Employee_Schedule Makro:
    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
Poznámka: V aplikaci Microsoft Excel verze 5.0 a 7.0, použijte zápis R1C1 Při zadávání buňku nebo oblast buněk s FormulaText argument. Naopak v aplikaci Microsoft Excel 97, používají a1 zápis k určení FormulaText argument.

Obrázek 9 ukazuje jak na uložení modelu informace se zobrazí v listu.

Obrázek 9. Informace o modelu je uložena makro New_Employee_Schedule

Zmenšit tento obrázekZvětšit tento obrázek
Obrázek 9. Informace o modelu, který je uložen

		  pomocí maker New Employee Schedule


Na New_Employee_Schedule makro uložíte každý nový model listu. Na Load_Employee_Schedule Makro můžete načíst jeden z těchto modelů uložené. Makro vyzve uživatele pro model zatížení a pak hledání sloupce I data modelu. Pokud data modelu se zjistí, Load_Employee_Schedule Makro načte odpovídající vzoru, byl odstraněn a pak vede konečné výsledky.

Popisuje následující kód New_Employee_ScheduleMakro:
    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
Na New_Employee_Schedule Makro zavádí SolverReset funkce. Na SolverResetfunkce lze odstranit všechny vybrané buňky a omezení Parametry Řešitele Dialogové okno a obnovit všechna nastavení Na SolverReset funkce nemá žádné argumenty.

Jak najít další informace o Řešitel aplikace Microsoft Excel

Následující zdroje obsahují informace o tom, jak použít Řešitele Microsoft Excel doplněk.

  • S konkrétní Řešitele zpráv naleznete v tématuFrontline Systémy.
  • Tipy na budování čitelný spravovatelných modely, vizFrontline Systémy.
  • Další informace o Řešitele limity pro omezení a klepněte na následující číslo článku databáze Microsoft Knowledge Base:
    75714Řešitel limity pro omezení
  • Pro několik příkladů použití doplňku Řešitel aplikace Microsoft Excel v aplikaci Microsoft Aplikace Excel naleznete v části Ukázkový soubor s názvem Solvsamp.xls.
  • Následující umístění je výchozím umístěním souboru vzorku, který je součástí Aplikace Microsoft Excel 97:
    \Program Files\Microsoft Office\Office\Examples\Solver\SolvSamp.xls
  • Následující umístění je výchozím umístěním souboru vzorku, který je součástí Aplikace Microsoft Excel 7.0:
    \MSOffice\Excel\Examples\Solver\SolvSamp.xls
  • Následující umístění je výchozím umístěním souboru vzorku, který je součástí Aplikace Microsoft Excel 5.0:
    \Excel\Examples\Solver\SolvSamp.xls

Jak lze získat další informace o algoritmus a metody, které jsou používány Řešitel aplikace Microsoft Excel

Řešitel aplikace Microsoft Excel používá Generalized Reduced Gradient Nelineárním optimalizačním kódem (GRG2), který byl vyvinut tak, který vytvořili Leon Lasdon z University of Texas v Austinu a Allan Waren Z Cleveland State University.

Další informace o algoritmus používaný Řešitel aplikace Microsoft Excel klepněte na následující číslo článku databáze Microsoft Knowledge Base:
82890Použití Řešitele generalized snížené


Lineárních problémů a se používá simplexní metoda s hranice na proměnné a pobočky a mez metody implementované John Watson a Dan řešení, Frontline Systems, Inc. Další informace o procesech vnitřních řešení používaných Řešitele, kontakt:

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 


Výběry Řešitel aplikace Microsoft Excel kód programu jsou copyright 1990, 1991, 1992 a 1995 základní systémy Části Inc. jsou autorským právem společnosti Optimal Methods, Inc z roku 1989.

Poznámka: Na Microsoft Excel doplněk Řešitel popisovanou v tomto článku je poskytován "tak jak je" a jsme ne zaručit, že jej lze použít ve všech situacích. Přestože společnost Microsoft podporu Odborníci v oblasti IT mohou pomoci s instalací a existující funkce tohoto doplněk, nemohou-li doplněk poskytuje nové funkce.

ŽÁDNÉ ZÁRUKY. Software je poskytován "jako-je" bez záruky jakéhokoli druhu, a jakékoli použití tohoto produktu software na vlastní nebezpečí.

Vlastnosti

ID článku: 843304 - Poslední aktualizace: 22. května 2011 - Revize: 3.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Excel 97 Standard Edition
Klíčová slova: 
kbhowto kbmacroexample kberrmsg kbaddin kbvba kbprogramming kbinfo kbmt KB843304 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:843304
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.

Dejte nám zpětnou vazbu

 

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