Excel 97'de Excel Çözücü'ni kullanarak, Visual Basic makroları oluşturmak hakkında

Makale çevirileri Makale çevirileri
Makale numarası: 843304 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, Microsoft Visual Basic makroları oluşturmak için Microsoft Excel 97'de Microsoft Excel Çözücü kullanmayı açıklamaktadır. Microsoft Excel Çözücü, bir Microsoft Excel eklentisi olur.

Ayrıca bu makale, makroları oluşturma, makro tasarımı ve makro kısıtlamaları ile çalışma hakkında bilgi içerir. Bu makalede, ayrıca algoritma ve Microsoft Excel çözücü tarafından kullanılan yöntem anlatılır. Aşağıdaki listede makale. tüm konular verir

Giriş

Bu makalede, Microsoft Excel hakkında bilgi içeren Çözücü.

Daha fazla bilgi

Microsoft Excel Çözücü açıklaması

Microsoft Excel Çözücü, formülde bir Microsoft Excel çalışma sayfasındaki belirli bir hedef hücre için en uygun değerini belirlemek için Microsoft Excel'in ekleme in. Microsoft Excel Çözücü yardımcı olur. Microsoft Excel Çözücü, hedef hücre için Denklem kullanarak ilişkili diğer hücrelerin değerlerini ayarlar. Denklem oluşturma ve parametreleri veya kısıtlamaları değişkenleri için denklemde tanımlayan sonra Microsoft Excel Çözücü tüm kısıtlamalar karşılayan yanıt gelmesi için çeşitli çözümleri çalışır. Microsoft Excel Çözücü, "bir denklemi çözmek için <a0></a0>" aşağıdaki öğeleri kullanır:
  • Hedef hücrenin - hedef hücre amaç ' dir. Simge durumuna küçültülemez, ekranı kaplamış, veya yüklenecek belirli bir değere ayarlanmış çalışma modelinde hücredir.
  • Hücreleri değiştirme - değiştirme hücreleri karar değişkenleridir. Bu hücreleri hedef hücre değerinin etkiler. Bu hücreleri hedef hücre için en uygun çözümü bulmak için Microsoft Excel çözücü tarafından değiştirilir.
  • Kısıtlamalar - içeriği kısıtlama hücrelerin kısıtlamaları olan. Başka bir hücreye olan için belirtilen değerden daha az kısıtlanmış olabilir, bir çalışma sayfası modeli bir hücredeki tamsayı değerler için kısıtlanabilir.
Oluşturma ve düzenleme, Microsoft Excel Çözücü modelinin bir Microsoft Visual Basic for Applications (VBA) makrosu kullanarak otomatikleştirebilirsiniz. Bu makalede, Microsoft Excel 97'de Microsoft Excel Çözücü işlevlerini kullanmak üzere VBA makro dil kullanmayı açıklamaktadır. Bu makalede, VBA dili ve Microsoft Excel 97 için Microsoft Visual Basic Düzenleyicisi hakkında bilgi sahibi olduğunuz varsayılmaktadır. Bu makalede kullanılan örnek aşağıdaki Microsoft Web sitesinden yüklenebilir:
http://download.microsoft.com/download/excel97win/solverex/1.0/WIN98Me/EN-US/SolverEx.exe
Not Ayrıca, makrolar ve Microsoft Excel sürüm 5.0 ve 7.0 Bu makalede anlatılan örnek kullanabilirsiniz.

Bir VBA makrosu Microsoft Excel Çözücü işlevlerini nasıl kullanılır

Microsoft Excel Çözücü eklenti işlevleri bir VBA makrosu kullanmak için <a0></a0>, size eklentiyi VBA makroları içeren çalışma kitabını projeden başvurmalıdır. Microsoft Excel Çözücü Eklentisi başvurusu, makro çalıştırmayı denediğinizde aşağıdaki derleme hatası alırsınız:
Derleme hatası: Sub veya tanımlanmamış işlev.
Çalışma kitabınızdaki makro için Microsoft Excel Çözücü Eklentisi başvurmak için <a0></a0>, aşağıdaki adımları kullanın:
  1. Çalışma kitabını açın.
  2. Araçlar menüsünden, makro ' nun üzerine gelin ve sonra Visual Basic Düzenleyicisi ' ni tıklatın.
  3. Araçlar menüsünde, Başvurular ' ı tıklatın.
  4. Kullanılabilir başvurular) listesinde, Solver.xls onay kutusunu tıklatıp seçin ve Tamam ' ı tıklatın.

    NotKullanılabilir başvurular) listesinde Solver.xls görmüyorsanız, Gözat ' ı tıklatın. Başvuru Ekle) iletişim kutusunda, bulmak ve Solver.xla dosyayı seçin ve ' ı tıklatın. Solver.xla dosyası, genellikle C:\Program Files\Microsoft Office\Office\Library\Solver alt klasöründe bulunur.
Şimdi bir VBA makrosu Microsoft Excel Çözücü işlevleri kullanmaya hazırsınız.

<a1>Tasarım</a1> oluşturur ve basit bir Microsoft Excel Çözücü modeli çözdü bir VBA makrosu nasıl

Aşağıdaki üç işlevi, Microsoft Excel Çözücü birçok işlevleri sunar, ancak temel oluşturmak ve model çözme şunlardır:
  • SolverOK işlevi
  • SolverSolve işlevi
  • SolverFinish işlevi

SolverOK işlevi

SolverOK işlevi temel bir Microsoft Excel Çözücü modeli tanımlar. Genellikle SolverOK işlevdir ilk işlev Microsoft Excel Çözücü model oluşturmak için kullanın. SolverOK işlevi, Çözücü ' Araçlar ' ı tıklatarak için eşdeğerdir menüsünü ve ardından Çözücü Parametreleri seçenekleri belirterek iletişim kutusu. SolverOK işlevinin sözdizimi şudur:
SolverOK(SetCell, MaxMinVal, ValueOf, ByChange)
Aşağıdaki bilgiler SolverOK işlevinin sözdizimi anlatılmaktadır:
  • SetCell hedef hücreyi belirtir.
  • MaxMinVal Hedef hücrenin en büyük değeri (1), en az bir değer (2) veya belirli bir değer (3) çözmek isteyip istemediğinizi için karşılık gelir.
  • Değerini, hedef hücre eşleşiyor değerini belirtir. MaxMinVal, 3'e ayarlarsanız, bu bağımsız değişkeni belirtmeniz gerekir. 1 Veya 2'ye MaxMinVal ayarlarsanız, bu bağımsız değişkeni belirtmeyebilirsiniz.
  • ByChange, hücre veya değiştirilecek bir hücre aralığını belirtir.
Şekil 1 SolverOK fonksiyon bağımsız değişkenleri, Çözücü Parametreleri</a0> iletişim kutusunda parametreleri ile ilişkilendirir.

Şekil 1. Ile SolverOK ilişkili Parametreler bağımsız değişkenleri

Bu resmi kapatBu resmi aç
 Figure 1. Parameters that are associated
		  with the SolverOK arguments


SolverSolve işlevi

SolverSolve işlevi SolverOK işleviyle belirlenen parametreleri kullanarak modeli çözdü. Çözücü Parametreleri</a0> iletişim kutusunda Çöz tıklatmaya SolverSolve işlevini çalıştırmadan eşdeğerdir. SolverSolve işlevinin sözdizimi şudur:
SolverSolve(UserFinish, ShowRef)
Aşağıdaki bilgiler SolverSolve işlevinin sözdizimi anlatılmaktadır:
  • UserFinish modeli çözme tamamlamak için kullanıcı isteyip istemediğinizi belirtir.

    Sonuçları görüntülemeden dönmek için Çözücü Sonuçları iletişim kutusunda, bu bağımsız değişkeni, TRUE olarak ayarlanır. Sonuçları döndüren ve <a0>Çözücü Sonuçları</a0> iletişim kutusunu görüntülemek için bu bağımsız değişkeni YANLıŞ olarak ayarlayın
  • ShowRef Microsoft Excel Çözücü, bir ara çözüm döndürdüğünde, çağrılan makro tanımlar.

    ShowRef bağımsız değişken, yalnızca DOğRU SolverOptions işlevinin StepThru bağımsız değişkeni geçirildiğinde kullanılmalıdır.

SolverFinish işlevi

SolverFinish işlevi sonuçlardan ne ve ne tür çözüm işlemini tamamladıktan sonra oluşturmak için rapor gösterir. SolverFinish işlevinin sözdizimi şudur:
SolverFinish (KeepFinal, ReportArray)
Aşağıdaki bilgiler SolverFinish işlevinin sözdizimi anlatılmaktadır:
  • KeepFinal ne yerine son sonuçları gösterir. Son çözüm değerlerini KeepFinal 1 ise, değişen hücreleri, değerleri değiştirme tutulur. KeepFinal 2 ise, son çözüm değerlerini atılır ve önceki değerlerine geri yüklenir.
  • ReportArray çözüm ulaşıldığında, Microsoft Excel'in oluşturacak bir rapor türünü belirten bir dize belirtir. ReportArray 1 olarak ayarlanırsa, Microsoft Excel, bir yanıt raporu oluşturur. 2'Ye ayarlanırsa, Microsoft Excel bir duyarlılık raporu oluşturur, 3'e ayarlı ise ve Microsoft Excel'in sınırlamaları bir rapor oluşturur. Bu raporlardan "How to generate reports for solutions" bölümüne bakın) hakkında daha fazla bilgi için.
Şekil 2'nı tıklatın. Microsoft Excel Çözücü SolverFinish bağımsız değişkenleri ile ilgili seçenekleri oluşur.

Bu resmi kapatBu resmi aç
 Figure 2. Solver results options
		  that are associated with SolverFinish arguments


Bu makalede, etkileşimli, basit bir Microsoft Excel Çözücü modeli oluşturma. Ilk adım, çalışma sayfanızda modeli için oluşturmaktır. Çalışma sayfasında bazı veri hücreleri ve bir formül içeren en az bir hücre içerir. Bu formül diğer hücrelere çalışma sayfasındaki bağlıdır. Çalışma sayfanızda ayarladıktan sonra Çözücü, Araçlar menüsünden Seçenekler'i tıklatın. Çözücü Parametreleri iletişim kutusunda, hedef hücre için çözme değeri, değiştirilecek bir hücre aralığını ve kısıtlamalar belirtin. Çöz çözüm işlemini başlatmak için Ek Yardım düğmesini tıklatın. Microsoft Excel Çözücü bir çözüm buldu sonuçları çalışma sayfanızda görünür, sonra Microsoft Excel Çözücü son sonuçları saklamak isterseniz veya bunları atmak istiyorsanız, isteyen bir ileti kutusu görüntüler. Aşağıdaki seçeneklerden birini tıklattığınızda, Microsoft Excel Çözücü tamamlanır.

Şekil 3, aşağıdaki adımları kullanarak oluşturabileceğiniz basit bir modeli göstermektedir.

Şekil 3'nı tıklatın. Basit BIR modeli: kare kökü modeli

Bu resmi kapatBu resmi aç
 Figure 3. A
		  simple model: The Square Root model


Formül içeren bu örnekte, değişiklik hücre A1, A1 = ^ 2, A2 hücresi oluşturan bir değer 50 değerine eşit. Diğer bir deyişle, 50 kare kökünü bulun. Kare kökü modelinde yok bir kısıtlama yoktur. Find_Square_Root makro aşağıdaki görevleri gerçekleştirir:
  • A2 hücresinin değeri 50 değeri A1 hücresinin değeri değiştirerek giderecektir bir modeli kurar.
  • Bu model çözdü.
  • Bu son sonuçları çalışma sayfasına Çözücü Sonuçları</a0> iletişim kutusunu görüntülemeden kaydeder.
Bu basit bir makro, bir Microsoft Excel Çözücü model oluşturur ve bu kullanıcı müdahalesi çözdü. Aşağıdaki kod Find_Square_Root makro açıklar:
    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 makro Find_Square_Root makro değiştirilmiş sürümüdür. Find_Square_Root2 makro ınputbox işlevi kullanırsanız, hedef hücre için çözmek istediğiniz değeri ister. Bir değer girdikten sonra Find_Square_Root2 makro bu parametre SolverOKdeğerini bağımsız değişken değeri olarak ayarlar, sorunu çözdü, sonuçları, değişken kare kökünü kaydeder çözüm atar ve değeri çalışma sayfasında, özgün durumuna geri yükler. Temel olarak, Find_Square_Root2 makro içinde bir veya daha fazla değişken sonuçları kaydedin ve sonra değişen hücrelerin özgün değerlerine geri yükleme nasıl göstermektedir.

Aşağıdaki kod Find_Square_Root2 makro açıklar:
    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

Raporların çözümleri için nasıl kullanılır

Microsoft Excel Çözücü Sonuçları nasıl değişti ve nasıl kısıtlamalar kapatmak açıklayan raporlar çeşitli kritik değerlerini gelen sunar. Her rapor, çalışma kitabındaki ayrı bir çalışma sayfasına yerleştirilir. Aşağıdaki Microsoft Excel Çözücü sunan bir rapor türleri şunlardır:
  • Yanıt raporu - yanıt raporu hedef hücreyi ve değişen hücreler, özgün ve son karşılık gelen değerlerin, kısıtlamaları ve kısıtlamaları hakkında bilgi listeler.
  • Duyarlılığı raporu - duyarlılık raporu nasıl çözüm hedef hücre formülünü küçük değişiklikler duyarlıdır hakkında bilgi sağlar.
  • Sınırları raporu - sınırları raporu hedef hücreyi ve değişen hücreleri ilgili değerleri, alt ve üst sınırları ve hedef değerleri listeler.
Modelleriniz için rapor oluşturmak için <a0></a0>, ReportArraySolverFinish işlev bağımsız değişkeni için bir değer dizisi belirtin. ReportArray bağımsız değişken hakkında daha fazla bilgi için "SolverFinish (KeepFinal, ReportArray) " bölümüne bakın. Find_Square_Root2 makro oluşturup çözdü modelinin sınırları raporu oluşturmak istiyorsanız, aşağıdaki örnek kodu benzer şekilde, makroda SolverFinish işlevi değiştirin:
    SolverFinish KeepFinal:=2, ReportArray:= Array(3)
SolverFinish işlevini birden çok raporlar üretmek için aşağıdaki örnek kodu benzer olacak şekilde değiştirin:
    SolverFinish KeepFinal:=2, ReportArray:= Array(1,2)

Bir döngü makroda Microsoft ExcelSolver işlevlerini nasıl kullanılır

Çoğu durumda, Microsoft Excel Çözücü, hedef hücre için birden çok değer çözmek için iyi bir fikirdir. Bunu genellikle VBA ile kullanılabilen bir döngü yapıları birini kullanarak yapabilirsiniz.

Create_Square_Root_Table makrosu, Microsoft Excel Çözücü, bir döngü makroda nasıl çalıştığını gösterir. Create_Square_Root_Table makro, yeni bir çalışma sayfasında bir tablo oluşturur. On ve karşılık gelen her sayının kare kökünü arasında bir sayı ekler. Create_Square_Root_Table makro numaraları 1 ile 10 arasında yineleme ve hedef hücre kare kökü yinelemenin sayısı ile eşleşen bir değer modelinde çözmek için döngü kullanarak bir tablo oluşturur. Aşağıdaki kod Create_Square_Root_Table makro açıklar:
    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

Şekil 4'te gösterildiği tablo Create_Square_Root_Table makro oluşturur.

Şekil 4. Create_Square_Root_Table makro tarafından üretilen çıktı

Bu resmi kapatBu resmi aç
Figure 4. Output that is generated by the
		  Create Square Root Table macro


Kısıtlamaları ile çalışma

Bir veya daha çok hücre içeriği sınırlama bir kısıtlamadır. Bir model, bir veya birden çok kısıtlamaları olabilir. Kısıtlaması belirlenen inequalities bir dizi veya bir çözümü belirli birleşimleri karar değişkenler için değerleri kaldırmak equalities ' dir. Bir hücre, sıfırdan büyük olması ve başka bir hücreyi içeren yalnızca bir kısıtlama, gerektirebilecek bir tamsayı.

Bu noktaya kadar tartışılan kare kökü modeli herhangi bir kısıtlama içermeyen basit bir modeldir. Şekil 5 kısıtlamaları'nı kullanan bir modeli göstermektedir. Bu model amacı için en yüksek karı en iyi ürün birleşimi bulmaktır.

Şekil 5. Ürün karıştırmak kar marjı diminishing ile

Bu resmi kapatBu resmi aç
Figure 5. Product mix with
		  diminishing profit margin


Örneğin, bir şirket, TV, müzik seti ve hoparlör üreten ve güç kaynakları, hoparlör koniler vb. genel bir parça sayımını kullanır. ' De sınırlı tedarik bölümleridir. Amacınız oluşturmak için ürün en karlı bir karışımını belirlemektir. Dağıtım Kanalı yüklemek için ek fiyat Özendirme gerektiğinden, kar, birim bir birim azaltır. 0,9 Diminishing döndürür üstür. Bu, üs, ürün G11:I11 aralıktaki karı hesaplamak için kullanılır.

Amacınıza en yüksek karı (hücre G14) bulmaktır. En yüksek karı bulmak için değiştiren, oluşturan birim sayısı değerlerdir. Aralık G9:G11 Bu modelde değişen hücreleri temsil eder. Bilgisayarınızı yalnızca kullandığınız parça sayısı, bir yandan sahip bölümlerinin sayısını aşamaz sınırlamadır. Microsoft Excel Çözücü ile bu sınırlama E3:E7 görünen < B3:B7 =. Bu bir Microsoft Excel Çözücü modeli etkileşimli olarak oluşturmak için kullanılmışsa, Microsoft Excel Çözücü Parametreleri Şekil 6 içinde bulunan benzer görünecektir.

Şekil 6. Ürün için Microsoft Excel Çözücü Parametreleri Diminishing işlenir Kütük modeliyle karıştırabilir.

Bu resmi kapatBu resmi aç
Figure 6. Microsoft Excel Solver parameters for
		  the product mix with Diminishing Profit Margin model


Oluşturma ve ürün karışımı Diminishing işlenir Kütük modeliyle çözmek için yeni bir işlevi (yukarıda anlatıldığı Microsoft Excel Çözücü VBA işlevleri ek olarak <a1>SolverAdd</a1> işlevine kullanır. SolverAdd işlevi kısıtlamayı modele ekler. Çözücü Parametreleri</a0> iletişim kutusunda <a2>Ekle</a2> düğmesini tıklatmak SolverAdd işlevini çalıştırmadan eşdeğerdir. SolverAdd işlevinin sözdizimi aşağıdaki gibidir:
SolverAdd (CellRef ilişkisi, FormulaText)
Aşağıdaki bilgiler SolverAdd işlevinin sözdizimi anlatılmaktadır:
  • CellRef kısıtlamayı solundaki oluşturan bir veya daha fazla hücre başvuruyor.
  • Ilişki bir kısıtlama sağ tarafını sola arasındaki aritmetik bir ilişkidir.
  • Ilişki, 1 ile 5 Aşağıdaki örnekte olduğu gibi) arasında bir değer olabilir:
    • Değer 1'den küçük veya eşit olan (< =).
    • 2 Vaue eşittir (=).
    • Değer 3'den büyük veya eşit (> =).
    • 4 Değer bir tamsayıdır.
    • 5 Ikili (sıfır veya bir değer) değeridir.
  • FormulaText sağındaki constraint.* * oluşturan bir veya daha fazla hücre başvuruları
** FormulaTextSolverAdd işlev bağımsız değişkeni için bir hücre aralığı belirttiğinizde, göreli veya mutlak başvuru olup olmadığını unutmayın. Genellikle, mutlak bir başvuru FormulaText bağımsız değişkeni için belirtmeniz gerekir. Göreceli başvurular FormulaText bağımsız değişkeni için belirtirseniz, ancak hedef hücreyi ve etkin hücrenin göreli başvuru olacağını fark ettiniz.

Not Microsoft Excel sürüm 5.0 ve 7.0, R1C1 gösterimde kullanın FormulaText bağımsız değişkeni ile bir hücre veya hücre aralığını belirtin. Buna, 97'yi, sonra da <a1>kullanma</a1> A1-stili gösterimde FormulaText bağımsız değişken olarak belirlemek için Microsoft Excel.

Şekil 7. SolverAdd bağımsız değişkenleri ile ilişkili alanlar

Bu resmi kapatBu resmi aç
 Figure 7. Fields that are associated with
		  the SolverAdd arguments


Ürün karışımı Diminishing döndürüyor modeli için bir model oluşturur Maximum_Profit makro. Bu makro, aşağıdaki işlevleri veya bağımsız değişken yürütür:

  • SolverOK işlevi, hedef hücre için en büyük bir değer ayarlar ve değiştirmek için hücreleri belirtir.
  • SolverAdd işlevi kısıtlamayı modele ekler.
  • SolverSolve işlevi, Çözücü Sonuçları</a0> iletişim kutusunu görüntülemeden bir çözüm bulur.
  • SolverFinish işlev, çalışma sayfasına son sonuçları döndürür.
Aşağıdaki kod açıklar 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

Not gelen Microsoft Excel sürüm 5.0 ve 7.0, R1C1 gösterimde FormulaText bağımsız değişkeni ile bir hücre veya hücre aralığını belirttiğiniz kullanın. Buna, 97'yi, sonra da <a1>kullanma</a1> A1-stili gösterimde FormulaText bağımsız değişken olarak belirlemek için Microsoft Excel.

Maximum_Profit makroyu çalıştırdığınızda, Microsoft Excel Çözücü 160 TV kümeleri, 200 müzik seti ve en yüksek kar, $ 14,917 dolar 80 hoparlörler oluşturmanın bir çözüm bulabilirsiniz.

Değiştirme ve silme kısıtlamaları

Kısıtlamaları modeliniz, program aracılığıyla değiştirildi silinmiş veya. Kısıtlamalar CellRef ve Relation bağımsız değişkenler tarafından tanımlanır.

Varolan bir kısıtlama programsal olarak değiştirmek için <a0></a0>, SolverChange işlevini kullanın. Aşağıdaki SolverChange sözdizimidir işlevi:
SolverChange (CellRef ilişkisi, FormulaText)
SolverChange fonksiyon bağımsız değişkenleri SolverAdd işlevini kullanmak için aynı olduğunu unutmayın.

Ürün karışımı Diminishing döndürüyor modeliyle kısıtlamasında değiştirmek isterseniz, SolverChange işlevini kullanırsınız. Örneğin, şu anda belirtilen kısıtlamaya, kullanılan bölümlerini'den küçük veya eşit bölümlerinin sayısını elde sayı ise (E3:E7 < B3:B7 =). Bu sınırlama, kullanılan parça sayısı daha az veya bu sayıya eşit parçalar öngörülen (parça sayısını eldeki) yanı sıra sipariş parça sayısını olacak biçimde değiştirmek istiyorsanız. Bu yeni bir kısıtlama E3:E7 gibi görüneceğini < D3:D7 =. Aşağıdaki makro varolan kısıtlama E3:E7 değiştirir < E3:E7 için B3:B7 = < D3:D7 = ve çözüm çözdü.

Aşağıdaki kod Change_Constraint_and_Solve makro açıklar:
    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 ve Relation bağımsız değişkeni tarafından tanımlanan kısıtlamalar nedeniyle, yalnızca sınırlama FormulaText bağımsız değişkeni SolverChange işlevini kullanarak değiştirebilirsiniz. Varolan bir kısıtlama CellRef ve Relation değerleri eşleşmiyorsa kısıtlamayı silin ve sonra değiştirilmiş kısıtlaması ekleyin. Kısıtlamayı silmek için <a0></a0>, SolverDelete işlevini kullanın. SolverDelete işlevinin sözdizimi şudur:

SolverDelete (CellRef ilişkisi, FormulaText)

SolverDelete fonksiyon bağımsız değişkenleri kullandığınız SolverAddSolverChange işlevleri ile aynı olduğunu unutmayın.

Aşağıdaki makro, bir kısıtlama eklemek veya silmek verilmektedir. Bu örnekte, Change_Constraint_and_Solve2 makro E3:E7 kısıtlamayı kaldırır < B3:B7 ürün karışımı Diminishing döndürüyor modeli alanından ve yeni bir kısıtlama ekler. Yeni bir değişiklik orijinal ilişkinin yalnızca sol ve sağ tarafında, kısıtlama burada ters sınırlamadır.

Aşağıdaki kod Change_Constraint_and_Solve2 makro açıklar:
    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

Not gelen Microsoft Excel sürüm 5.0 ve 7.0, R1C1 gösterimde FormulaText bağımsız değişkeni ile bir hücre veya hücre aralığını belirttiğiniz kullanın. Buna, 97'yi, sonra da <a1>kullanma</a1> A1-stili gösterimde FormulaText bağımsız değişken olarak belirlemek için Microsoft Excel.

Nasıl yüklemek ve modelleriniz kaydedin.

Çalışma kitabınızı kaydettiğinizde, Çözücü Parametreleri</a1> iletişim kutusunda belirtilen son parametreleri çalışma kitabı ile birlikte kaydedilir. Çalışma kitabını açtığınızda, bu nedenle, Parametreler çalışma kitabını son kaydettiğiniz zaman aynıdır.

Bir çalışma sayfası için birden fazla sorunu tanımlayabilirsiniz. Her sorun hücreleri ve kısıtlamaları, Çözücü Parameter ve Çözücü Seçenekleri iletişim kutularında girdiğiniz oluşur. Çalışma sayfasını yalnızca son sorun kaydedilmiş olduğundan, açıkça kaydetmek sürece başka sorunlar kaybedeceksiniz. Bunları kaydetmek için <a0></a0>, Modeli Kaydet, Ek Yardım düğmesini tıklatın. Çözücü Seçenekleri iletişim kutusu. Benzer şekilde, önceden kaydedilmiş parametreleri geri yüklemek istediğinizde, Çözücü Seçenekleri</a0> iletişim kutusundaki Model Yükle'i tıklatın.

Çözücü modelleri, çalışma sayfasındaki hücreler aralığında saklanır. Aralıktaki ilk hücreyi, hedef hücre formülünü içerir. Ikinci bir hücre aralığındaki modelinde değişen hücreleri tanımlayan formülünü içerir. Aralıktaki son hücreye, Çözücü Seçenekleri</a1> iletişim kutusunda ayarlanan seçenekler temsil eden bir dizi içerir. Ikinci hücre son hücre arasındaki hücreleri modelindeki kısıtlamaları temsil eden formülleri içerir.

Şekil 8 çalışan iş planlama çizelgeleme için bir modeli göstermektedir. Küçük bir üretici için çalıştığını varsayar. Bu tablo, her çalışanın çubuğundaki ödeme, zamanlanmış olan saat sayısını ve her çalışana bir saat üretebileceği birimleri öngörülen birkaç saat fiyatı gösterir. Amacınız, işçilik maliyeti en aza üretilen birim sayısı için belirli bir kota uyan sağlamaktır.

Şekil 8. Personel Planlama modu
l
Bu resmi kapatBu resmi aç
 Figure 8. Employee Scheduling
		  model


Iki ek Etkenler (veya kısıtlamaları) herhangi bir çalışan çalışabilirsiniz saat minimum/maksimum sayısını ve oluşturmak istediğiniz birim sayısını dikkate almalısınız. Microsoft Excel Çözücü parametreleri, 3975 birimleri oluşturmak gereken belirtilen bir hafta için ve her çalışanın arasında 30 ila 45 saat çalışmak istiyorsanız aşağıdaki tabloda açıklanan benzer görünecektir:

Bu tabloyu kapaBu tabloyu aç
ParametreHücre aralığıAçıklama
Hedef hücre $ d $ 12 Işçilik maliyeti.
Hücreleri değiştirme $ c $ 2: $ c $ 8 Çalışanın çalışma saatleri.
Kısıtlamaları $ c $ 2: $ c $ 8 < 45 = Çalışan başına en fazla bir saat 45 olur.
$ c $ 2: $ c $ 8 > 30 = En az per employee saattir 35.
$ 12 = 3975 $ g 3975 Birimlerinin sayısıdır.


Hedeflerinize en iyi işçilik maliyeti temelinde bir haftalık, her model haftalık olarak kaydetmek ve gerektiğinde, herhangi bir haftalık modeli yükleme yapabilmek için çözmek üzeresiniz.

Bir makroda bir model için Microsoft Excel Çözücü Parametreleri kaydedilmesine ve sırasıyla SolverSave ve SolverLoad işlevleri kullanılarak yüklenir. Aşağıdaki sözdizimini, SolverSave ve SolverLoad işlevleri vardır:

SolverSave (SaveArea)

SolverLoad (LoadArea)

Yalnızca bir bağımsız değişkeni, <a2>SaveArea</a2> ve <a4>LoadArea bağımsız değişkenleri sırasıyla SolverSave ve SolverLoad işlevleri vardır. Bu bağımsız değişkenleri, model bilginin saklandığı bir çalışma sayfasında bir aralık belirtin.

A?a??daki New_Employee_Schedule makro oluşturmak için çözmek ve kullanıcı girişini temel alan bir modelin gösterilmiştir. Kullanıcı model oluşturmak için birim sayısını ve çalışan saatleri minimum ve maksimum sayısını tarihini girmeniz istenir. Bu verileri daha sonra model oluşturmak için kullanılır. Model çözülen ve sonra da kullanıcı girdisi kaydedilir.

Aşağıdaki kod New_Employee_Schedule makro açıklar:
    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
Not gelen Microsoft Excel sürüm 5.0 ve 7.0, R1C1 gösterimde FormulaText bağımsız değişkeni ile bir hücre veya hücre aralığını belirttiğiniz kullanın. Buna, 97'yi, sonra da <a1>kullanma</a1> A1-stili gösterimde FormulaText bağımsız değişken olarak belirlemek için Microsoft Excel.

Şekil 9 kaydedilmiş model bilgileri, çalışma sayfasında nasıl görüneceğini gösterir.

Şekil 9. New_Employee_Schedule makro tarafından kaydedilen modeli bilgileri

Bu resmi kapatBu resmi aç
Figure 9. Model information that is saved
		  by the New Employee Schedule macro


New_Employee_Schedule makro her yeni model, çalışma sayfasını kaydeder. Bu kaydedilmiş modellerinden birini Load_Employee_Schedule makro yükleyebilirsiniz. Makro yüklenemedi modeli için kullanıcıya sorar, sonra da sütununu arar ı modeli tarih. Modeli tarih bulunması durumunda, Load_Employee_Schedule makro ilgili modeli yükler, bunu çözer ve sonra nihai sonucu tutar.

Aşağıdaki kod New_Employee_Schedule makro açıklar:
    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 makro SolverReset işlevi tanıtır. SolverReset işlevi, hücre seçimi ve kısıtlamaları Çözücü Parametreleri</a0> iletişim kutusundaki tüm silmek için kullanılabilir ve SolverReset işlevdeki tüm ayarlarını sıfırlamak için bağımsız değişkenler bulunur.

Microsoft Excel Çözücü hakkında daha fazla bilgi bulma

Aşağıdaki kaynaklarda Microsoft Excel Çözücü kullanma hakkında bilgi eklenti.

  • Belirli bir Çözücü iletiler hakkında Yardım için bkz: Frontline Systems (ingilizce).
  • Okunabilir oluşturma ile ilgili ipuçları için yönetilebilir modeller, Frontline Systems bakın.
  • Çözücü hakkında ek bilgi için kısıtlamalar için sınırlar ve Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    75714Çözücü sınırlarını kısıtlamaları
  • Microsoft Excel Çözücü Eklentisi, Microsoft Excel'deki kullanan çeşitli örnekler için bkz: Solvsamp.xls örnek dosya.
  • Microsoft Excel 97 ile birlikte gelen örnek dosyasının varsayılan konumu şudur:
    \Program Files\Microsoft Office\Office\Examples\Solver\SolvSamp.xls
  • Microsoft Excel 7.0 ile gelen örnek dosyasının varsayılan konumu şudur:
    \MSOffice\Excel\Examples\Solver\SolvSamp.xls
  • Microsoft Excel 5.0 ile gelen örnek dosyasının varsayılan konumu şudur:
    \Excel\Examples\Solver\SolvSamp.xls

Nasıl yapılır: algoritmasını ve Microsoft Excel çözücü tarafından kullanılan yöntemleri hakkında daha fazla bilgi edinin.

Microsoft Excel Çözücü Generalized Reduced Gradyan kullanır (GRG2) doğrusal olmayan en iyi hale getirme kodu Waren'ın geliştirdiği Austin'deki Texas Üniversitesi'nden Leon Lasdon ' ın ve Clevaland State Üniversitesi'tarafından geliştirilmiştir.

Microsoft Excel çözücü tarafından kullanılan algoritma hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
82890Çözücü kullanan sınırlı Genelleştirilmiş


Doğrusal ve tamsayı sorunları simplex yöntemi ile sınırları, değişkenler ve John Watson ve Dan Fylstra, Frontline Systems, ınc. tarafından uygulanan şube ve ilişkili yöntemini kullanın... Çözücü'nün kullandığı iç çözüm işlemi hakkında daha fazla bilgi için aşağıdaki adrese başvurabilirsiniz:

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 Çözücü program kodunun olan seçimlerini, 1990, 1991, 1992 ve 1995 cephe sistemler tarafından telif hakkı, ınc. Portions Optimal yöntemleri, ınc. Telif Hakkı 1989 olur.

Not Bu makalede açıklanan Microsoft Excel Çözücü Eklentisi "olduğu gibi" sağlanan ve biz tüm durumlarda kullanılabilir garanti değildir. Microsoft destek uzmanları yükleme ve varolan işlevselliğini bu eklenti ile yardımcı olsa da, bunlar yeni işlevsellik sağlamak için eklentiyi değiştirmez.

HIÇBIR GARANTI. Sağlanan yazılımı "olarak-ise," Bu yazılımın kullanım ve hiçbir garanti olmadan kendi sorumluluà ° unuzdadýr üründür.

Özellikler

Makale numarası: 843304 - Last Review: 11 Ekim 2006 Çarşamba - Gözden geçirme: 1.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Excel 97 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowto kbmacroexample kberrmsg kbaddin kbvba kbprogramming kbinfo KB843304 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:843304
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

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