Цей підручник покаже вам, як використовувати надбудову Solver у VBA.
Solver-це надбудова, яка надається в Excel і використовується для виконання аналізу "що-якщо", надаючи альтернативні відповіді на формулу в комірці на основі значень, які ви можете передати формулі з інших клітинок у вашій книзі.
Увімкнення надбудови Solver у Excel
Виберіть Файл на стрічці Excel, а потім перейдіть до Варіанти.
Виберіть Надбудови і натисніть на Ідіть поруч із надбудовами Excel.
Переконайтесь, що Надбудова Solver вибрано опцію.
Також можна натиснути на Надбудови Excel на Розробник стрічку, щоб отримати діалогове вікно Надбудови.
Увімкнення надбудови Solver у VBA
Після того як ви ввімкнули надбудову Solver у Excel, вам потрібно додати посилання на неї у вашому проекті VBA, щоб використовувати її у VBA.
Переконайтеся, що вас натиснули у проекті VBA, де ви хочете використовувати вирішувач. Натисніть на Меню інструментів а далі Посилання.
Посилання на Надбудова Solver буде додано до вашого проекту.
Тепер ви можете використовувати надбудову Solver у коді VBA!
Використання функцій розв’язувача у VBA
Для використання Solver у VBA нам потрібно використовувати 3 функції Solver VBA. Це SolverOK, SolverAdd, та SolverSolve.
SolverOK
- SetCell - необов’язково - це має стосуватися комірки, яку потрібно змінити - вона повинна містити формулу. Це відповідаєВстановити клітинку цілі коробка вПараметри розв’язувача діалогове вікно.
- MaxMinVal - необов’язково - Ви можете встановити значення 1 (Максимізувати), 2 (Згорнути) або 3. Це відповідає значенню Макс, Хв, іЦінність варіанти вПараметри розв’язувача діалогове вікно.
- Значення - необов’язково -Якщо MaxMinValue встановлено на 3, то вам потрібно надати цей аргумент.
- ByЗмінити - необов’язково -Це повідомляє вирішувачу, які клітинки він може змінити, щоб досягти необхідного значення. Це відповідаєЗмінюючи змінні клітинки коробка вПараметри розв’язувача діалогове вікно.
- Двигун - необов’язково - це вказує на метод вирішення, який необхідно використати, щоб дійти до рішення. 1 для симплексного методу LP, 2 для нелінійного методу GRG або 3 для еволюційного методу. Це відповідаєВиберіть метод вирішення випадаючий список уПараметри розв’язувача діалогове вікно
- EngineDesc - необов’язково -це альтернативний спосіб вибору методу вирішення - тут ви вводите рядки “Simplex LP”, “GRG Nonlinear” або “Evolutionary”. Це також відповідаєВиберіть метод вирішення випадаючий список уПараметри розв’язувача діалогове вікно
SolverAdd
- CellRef - вимагається - це посилання на клітинку або діапазон клітинок, які слід змінити для вирішення проблеми.
- Відношення - вимагається - це ціле число, яке має бути від 1 до 6 і вказує дозволене логічне відношення.
- 1 менше, ніж (<=)
- 2 дорівнює (=)
- 3 більше, ніж (> =)
- 4 має мати кінцеві значення, які є цілими числами.
- 5 має мати значення від 0 до 1.
- 6 має мати кінцеві значення, які всі різні та цілі числа.
- FormulaText - необов’язково - Права сторона обмеження.
Створення прикладу розв’язувача
Розглянемо наступний аркуш.
У наведеному вище аркуші нам потрібно вирівняти рахунок у місяці номер один, встановивши клітинку B14 на нуль, змінивши критерії у клітинках F1 до F6.
123 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Двигун: = 1, EngineDesc: = "GRG нелінійний"End Sub |
Після того, як ви налаштували параметри SolverOK, вам потрібно додати деякі обмеження критеріїв.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Двигун: = 1, EngineDesc: = "GRG нелінійний"Додати критерії - F3 не може бути меншим за 8SolverAdd CellRef: = "$ F $ 3", Відношення: = 3, FormulaText: = "8"Додати критерії - F3 не може бути меншим за 5000SolverAdd CellRef: = "$ F $ 5", Відношення: = 3, FormulaText: = "5000"End Sub |
Після того, як ви встановили SolverOK та SolverAdd (за потреби), ви можете вирішити проблему.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Двигун: = 1, EngineDesc: = "GRG нелінійний""Додати критерії - F3 не може бути меншим за 8 SolverAdd CellRef: =" $ F $ 3 ", Відношення: = 3, FormulaText: =" 8 "" Додати критерії - F3 не може бути менше 5000SolverAdd CellRef: = "$ F $ 5", Відношення: = 3, FormulaText: = "5000"'знайти рішення, вирішивши проблемуSolverSolveEnd Sub |
Після запуску коду на екрані з’явиться наступне вікно. Виберіть потрібний параметр (тобто збережіть розв’язання або відновіть вихідні значення) і натисніть OK.