VBA Solver

Из этого туториала Вы узнаете, как использовать надстройку 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Конец подписки

После того, как вы запустите код, на вашем экране появится следующее окно. Выберите нужный вариант (например, «Сохранить решение решателя» или «Восстановить исходные значения») и нажмите «ОК».

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave