VBA Çözücü - Excel VBA'da Çözücü kullanmak için Adım Adım Örnek

İçindekiler

Excel VBA Çözücü

Karmaşık sorunları nasıl çözersiniz? Bu sorunların nasıl çözüleceğinden emin değilseniz, endişelenecek bir şey yok, Excel'imizde çözücümüz var. Önceki makalemiz olan “Excel Çözücü” nde denklemleri excel'de nasıl çözeceğimizi öğrendik. Farkında değilseniz, "SOLVER" VBA ile de mevcuttur. Bu yazıda, VBA'da "Çözücü" nin nasıl kullanılacağını size anlatacağız.

Çözücüyü Çalışma Sayfasında Etkinleştir

Çözücü, excel'de veri sekmesi altında bulunan gizli bir araçtır (zaten etkinleştirilmişse).

SOLVER'ı önce excel'de kullanmak için bu seçeneği etkinleştirmemiz gerekiyor. Aşağıdaki adımları izleyin.

Adım 1: DOSYA sekmesine gidin. DOSYA sekmesinin altında "Seçenekler" i seçin.

Adım 2: Excel Seçenekleri penceresinde "Eklentiler" i seçin.

Adım 3: En alttaki "Excel Eklentileri" ni seçin ve "Git" e tıklayın.

Adım 4: Şimdi "Çözücü Eklentisi" kutusunu işaretleyin ve Tamam'a tıklayın.

Şimdi veri sekmesinin altında "Çözücü" görmelisiniz.

Çözücüyü VBA'da Etkinleştir

VBA'da da Çözücü harici bir araçtır; onu kullanması için etkinleştirmemiz gerekiyor. Etkinleştirmek için aşağıdaki adımları izleyin.

Adım 1: Visual Basic Düzenleyicisi Penceresinde Araçlar >>> Referans'a gidin.

Adım 2: Referanslar listesinden "Çözücü" seçin ve kullanmak için Tamam'a tıklayın.

Artık Solver'ı VBA'da da kullanabiliriz.

VBA'da Çözücü İşlevleri

Bir VBA kodu yazmak için VBA'da üç "Çözücü İşlevi" kullanmamız gerekir ve bu işlevler "SolverOk, SolverAdd ve SolverSolve" dir.

ÇözücüOk

SolverOk (SetCell, MaxMinVal, ValueOf, ByChange, Engine, EngineDesc)

SetCell: Bu, değiştirilmesi gereken hücre referansı, yani Kar hücresi olacaktır.

MaxMinVal: Bu isteğe bağlı bir parametredir, aşağıda sayılar ve belirticiler bulunmaktadır.

  • 1 = Büyüt
  • 2 = Küçült
  • 3 = Belirli bir değerle eşleş

ValueOf: MaxMinVal bağımsız değişkeni 3 ise bu parametrenin sağlanması gerekir .

ByChange: Hangi hücreleri değiştirerek bu denklemin çözülmesi gerekir.

ÇözücüAdd

Şimdi SolverAdd parametrelerini görelim

CellRef: Sorunu çözmek için kriterleri belirlemek için, hücrenin ne olduğunun değiştirilmesi gerekir.

İlişki: Bunda mantıksal değerler sağlanmışsa aşağıdaki sayıları kullanabiliriz.

  • 1 küçüktür (<=)
  • 2 eşittir (=)
  • 3 büyüktür (> =)
  • 4, tam sayı olan son değerlere sahip olmalıdır.
  • 5, 0 veya 1 arasında değerlere sahip olmalıdır.
  • 6, hepsi farklı ve tam sayı olan son değerlere sahip olmalıdır.

Excel VBA'da Çözücü Örneği

Bir örnek için aşağıdaki senaryoya bakın.

Bu tabloyu kullanarak, minimum 10.000 olması gereken “Kar” miktarını belirlememiz gerekiyor. Bu sayıya ulaşmak için belirli koşullarımız var.

  • Satılacak Birimler bir tamsayı değeri olmalıdır.
  • Fiyat / Birim 7 ile 15 arasında olmalıdır.

Bu koşullara dayanarak, 10000 kar değerini elde etmek için kaç birimin hangi fiyata satılacağını belirlememiz gerekir.

Tamam, şimdi bu denklemi çözelim.

Step 1: Start the VBA subprocedure.

Code:

Sub Solver_Example() End Sub

Step 2: First we need to set the Objective cell reference by using the SolverOk function.

Step 3: First argument of this function is “SetCell”, in this example we need to change the value of Profit cell i.e. B8 cell.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8") End Sub

Step 4: Now we need to set this cell value to 10000, so for MaxMinVal use 3 as the argument value.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3 End Sub

Step 5: The next argument ValueOf value should be 10000.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000 End Sub

The next argument is ByChange i.e. by changing which cells this equation needs to be solved. In this case by changing Units to Sell (B1) and Price Per Unit (B2) cell needs to be changed.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") End Sub

Note: remaining arguments are not required here.

Step 6: Once the objective cell is set, now we need to construct other criteria’s. For this open “SolverAdd” function.

Step 7: First Cell Ref we need to change is Price Per Unit cell i.e. B2 cell.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2") End Sub

Step 8: This cell needs to be>= 7, so the Relation argument will be 3.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2"), Relation:=3 End Sub

Step 9: This cell value should be>=7 i.e. Formula Text = 7.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2"), Relation:=3, FormulaText:=7 End Sub

Step 10: Similarly the same cell needs to be less than 15, so for this relation is <= i.e. 1 as the argument value.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2"), Relation:=3, FormulaText:=7 SolverAdd CellRef:=Range("B2"), Relation:=1, FormulaText:=15 End Sub

Step 11: First cell i.e. Units to Sell must be an Integer value for this also set up the criteria as below.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2"), Relation:=3, FormulaText:=7 SolverAdd CellRef:=Range("B2"), Relation:=1, FormulaText:=15 SolverAdd CellRef:=Range("B1"), Relation:=4, FormulaText:="Integer" End Sub

Step 12: In one final step, we need to add the SolverSolve function.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2"), Relation:=3, FormulaText:=7 SolverAdd CellRef:=Range("B2"), Relation:=1, FormulaText:=15 SolverAdd CellRef:=Range("B1"), Relation:=4, FormulaText:="Integer" SolverSolve End Sub

Tamam, sonucu almak için F5 tuşuna basarak kodu çalıştırın.

Kodu çalıştırdığınızda aşağıdaki pencereyi göreceksiniz.

Tamam'a basın ve sonucu bir excel sayfasında alacaksınız.

Yani 10000 birim kar elde etmek için, maliyet fiyatının 5 olduğu fiyat başına 7'den 5000 birim satmamız gerekiyor.

Hatırlanacak şeyler

  • Çözücü ile excel ve VBA'da çalışmak için önce çalışma sayfası için etkinleştirin, ardından VBA referansı için etkinleştirin.
  • Hem çalışma sayfalarında hem de VBA'da etkinleştirildiğinde, yalnızca tüm Çözücü işlevlerine erişebiliriz.

Ilginç makaleler...