VBA सॉल्वर - एक्सेल VBA में सॉल्वर का उपयोग करने के लिए स्टेप बाय स्टेप उदाहरण

विषय - सूची

एक्सेल VBA सॉल्वर

आप जटिल समस्याओं को कैसे हल करते हैं? यदि आप सुनिश्चित नहीं हैं कि इन समस्याओं के बारे में कैसे जाना जाए, तो चिंता करने की कोई बात नहीं है कि हमारे पास एक्सेल में है। अपने पहले लेख "एक्सेल सॉल्वर" में हमने सीखा है कि एक्सेल में समीकरणों को कैसे हल किया जाए। यदि आप जागरूक नहीं हैं, तो "सोलवर" VBA के साथ भी उपलब्ध है। इस लेख में, हम आपको VBA में "सॉल्वर" का उपयोग करने के तरीके के बारे में बताएंगे।

वर्कशीट में सॉल्वर सक्षम करें

एक सॉल्वर एक छिपा उपकरण है जो एक्सेल में डेटा टैब के तहत उपलब्ध है (यदि पहले से सक्षम है)।

पहले एक्सेल में सॉल्वर का उपयोग करने के लिए, हमें इस विकल्प को सक्षम करने की आवश्यकता है। नीचे दिए गए चरणों का पालन करें।

चरण 1: फ़ाइल टैब पर जाएं। फ़ाइल टैब के अंतर्गत "विकल्प" चुनें।

चरण 2: एक्सेल विकल्प विंडो में "ऐड-इन" चुनें।

चरण 3: सबसे नीचे “एक्सेल ऐड-इन्स” चुनता है और “गो” पर क्लिक करता है।

चरण 4: अब बॉक्स “सॉल्वर ऐड-इन” को चेक करें और ओके पर क्लिक करें।

अब आपको डेटा टैब के तहत "सॉल्वर" देखना होगा।

VBA में सॉल्वर सक्षम करें

VBA में भी, सॉल्वर एक बाहरी उपकरण है; हमें इसका उपयोग करने के लिए इसे सक्षम करने की आवश्यकता है। इसे सक्षम करने के लिए नीचे दिए गए चरणों का पालन करें।

चरण 1: विज़ुअल बेसिक एडिटर विंडो में टूल्स >>> संदर्भ पर जाएं।

चरण 2: संदर्भ सूची से, "सॉल्वर" चुनें और इसका उपयोग करने के लिए ओके पर क्लिक करें।

अब हम वीबीए में भी सॉल्वर का उपयोग कर सकते हैं।

VBA में सॉल्वर फ़ंक्शंस

VBA कोड लिखने के लिए हमें VBA में तीन "सॉल्वर फ़ंक्शंस" का उपयोग करने की आवश्यकता है और वे फ़ंक्शन "SolverOk, SolverAdd, और SolverSolve" हैं।

SolverOk

सॉल्वरऑक (सेटसेल, मैक्समिनवैल, वैल्यूऑफ, बायचेंज, इंजन, इंजनडेस)

सेटसेल: यह सेल संदर्भ होगा जिसे बदलने की आवश्यकता है अर्थात लाभ सेल।

MaxMinVal: यह एक वैकल्पिक पैरामीटर है, नीचे संख्याएँ और विनिर्देशक हैं।

  • 1 = अधिकतम करें
  • 2 = छोटा करना
  • 3 = एक विशिष्ट मूल्य से मेल खाता है

ValueOf: MaxMinVal तर्क 3 होने पर इस पैरामीटर को आपूर्ति करने की आवश्यकता होती है।

ByChange: किन कोशिकाओं को बदलकर, इस समीकरण को हल करने की आवश्यकता है।

सॉल्वरएड

अब आइए SolverAdd के मापदंडों को देखते हैं

सेलरीफ: समस्या को हल करने के लिए मापदंड निर्धारित करने के लिए, सेल को बदलने की क्या आवश्यकता है।

संबंध: इसमें, यदि तार्किक मान संतुष्ट हैं तो हम नीचे दिए गए नंबरों का उपयोग कर सकते हैं।

  • 1 (<=) से कम है
  • 2 (=) के बराबर है
  • 3 से अधिक है (> =)
  • 4 में अंतिम मान होना चाहिए जो पूर्णांक हैं।
  • 5 में 0 या 1 के बीच मान होना चाहिए।
  • 6 में अंतिम मान होना चाहिए जो सभी भिन्न और पूर्णांक हैं।

एक्सेल VBA में सॉल्वर का उदाहरण

एक उदाहरण के लिए नीचे के परिदृश्य को देखें।

इस तालिका का उपयोग करते हुए, हमें "लाभ" राशि की पहचान करने की आवश्यकता है, जिसे न्यूनतम 10000 होने की आवश्यकता है। इस संख्या पर पहुंचने के लिए हमें कुछ शर्तों को पूरा करना होगा।

  • बेचने के लिए इकाइयों एक पूर्णांक मूल्य होना चाहिए।
  • मूल्य / यूनिट 7 से 15 के बीच होना चाहिए।

इन शर्तों के आधार पर हमें यह पहचानने की आवश्यकता है कि 10000 का लाभ मूल्य प्राप्त करने के लिए कितनी इकाइयों को किस मूल्य पर बेचना है।

ठीक है, चलो अब इस समीकरण को हल करें।

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

ठीक है, परिणाम प्राप्त करने के लिए F5 कुंजी दबाकर कोड चलाएँ।

जब आप कोड चलाते हैं, तो आपको निम्न विंडो दिखाई देगी।

ओके दबाएं और आपको एक एक्सेल शीट में परिणाम मिलेगा।

तो 10000 का लाभ कमाने के लिए, हमें 5000 यूनिट 7 प्रति मूल्य पर बेचने की आवश्यकता है जहाँ लागत मूल्य 5 है।

याद रखने वाली चीज़ें

  • एक्सेल और VBA में सॉल्वर के साथ काम करने के लिए, पहले इसे वर्कशीट के लिए सक्षम करें, फिर VBA संदर्भ के लिए सक्षम करें।
  • एक बार जब यह वर्कशीट और वीबीए दोनों पर सक्षम हो जाता है, तब ही हम सभी सॉल्वर फ़ंक्शन को एक्सेस कर सकते हैं।

दिलचस्प लेख...