Из этого туториала Вы узнаете, как использовать надстройку Solver в VBA.
Solver - это надстройка, поставляемая с Excel и используемая для выполнения анализа «что, если» путем предоставления альтернативных ответов на формулу в ячейке на основе значений, которые вы можете передать в формулу из других ячеек в вашей книге.
Включение надстройки Solver в Excel
Выберите Файл на ленте Excel, а затем перейдите к Параметры.
Выбирать Надстройки и нажмите на Идти рядом с надстройками Excel.
Убедитесь, что Надстройка Solver выбран вариант.
Или нажмите на Надстройки Excel на Разработчик ленты, чтобы открыть диалоговое окно надстроек.
Включение надстройки Solver в VBA
После того, как вы включили надстройку Solver в Excel, вам необходимо добавить ссылку на нее в свой проект VBA, чтобы использовать ее в VBA.
Убедитесь, что вы выбрали проект VBA, в котором вы хотите использовать Solver. Нажать на Меню инструментов а затем на использованная литература.
Ссылка на Надстройка Solver будет добавлен в ваш проект.
Теперь вы можете использовать надстройку Solver в коде VBA!
Использование функций решателя в VBA
Нам нужно использовать 3 функции Solver VBA, чтобы использовать Solver в VBA. Эти SolverOK, SolverAdd, а также SolverSolve.
СолверОК
- SetCell - по желанию - это должно относиться к ячейке, которую нужно изменить - она должна содержать формулу. Это соответствуетУстановить целевую ячейку коробка вПараметры решателя чат.
- MaxMinVal - по желанию - Вы можете установить значение 1 (Развернуть), 2 (Свернуть) или 3. Это соответствует Максимум, Мин., а такжеЦенить варианты вПараметры решателя чат.
- Значение - по желанию -Если для MaxMinValue установлено значение 3, вам необходимо указать этот аргумент.
- ByChange - по желанию -Это сообщает решателю, какие ячейки он может изменить, чтобы получить требуемое значение. Это соответствуетИзменяя ячейки переменных коробка вПараметры решателя чат.
- Двигатель - по желанию - это указывает на метод решения, который необходимо использовать, чтобы найти решение. 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", Engine: = 1, EngineDesc: = "GRG Nonlinear"Конец подписки |
После того, как вы настроили параметры SolverOK, вам необходимо добавить некоторые ограничения критериев.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Engine: = 1, EngineDesc: = "GRG Nonlinear"'добавить критерии - F3 не может быть меньше 8SolverAdd CellRef: = "$ F $ 3", отношение: = 3, FormulaText: = "8"'добавить критерии - F3 не может быть меньше 5000SolverAdd CellRef: = "$ F $ 5", отношение: = 3, FormulaText: = "5000"Конец подписки |
После того, как вы установили SolverOK и SolverAdd (при необходимости), вы можете Решить проблему.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Engine: = 1, EngineDesc: = "GRG Nonlinear"'добавить критерии - F3 не может быть меньше 8 SolverAdd CellRef: = "$ F $ 3", Relation: = 3, FormulaText: = "8"' добавить критерии - F3 не может быть меньше 5000SolverAdd CellRef: = "$ F $ 5", отношение: = 3, FormulaText: = "5000"'найти решение, решив проблемуSolverSolveКонец подписки |
После того, как вы запустите код, на вашем экране появится следующее окно. Выберите нужный вариант (например, «Сохранить решение решателя» или «Восстановить исходные значения») и нажмите «ОК».