Шаг 36.
VBA в MSExcel.
Методы объекта Range, использующие команды Excel. Метод GoalSeek

    На этом шаге мы рассмотрим параметры этого метода и пример применения.

    Метод GoalSeek (Подбор параметра) подбирает значение параметра (неизвестной величины), являющееся решением уравнения с одной переменной. Предполагается, что уравнение приведено к виду: правая часть является постоянной, не зависящей от параметра, который входит только в левую часть уравнения. Вручную метод GoalSeek выполняется с помощью команды Сервис | Подбор параметра (Tools | Goal Seek). Метод GoalSeek вычисляет корень, используя метод последовательных приближений, результат выполнения которого, вообще говоря, зависит от начального приближения. Поэтому для корректности нахождения корня надо позаботиться о корректном указании этого начального приближения.

    Синтаксис:

  Объект.GoalSeek(Goal, ChangingCell)

    Аргументы:

Таблица 1. Аргументы метода GoalSeek
Аргумент Назначение
Объект Ячейка, в которую введена формула, являющаяся правой частью решаемого уравнения. В этой формуле роль параметра (неизвестной величины) играет ссылка на ячейку, указанную в аргументе ChangingCell
Goal Значение левой части решаемого уравнения, не содержащей параметра
ChangingCell Ссылка на ячейку, отведенную под параметр (неизвестную величину). Значение, введенное в данную ячейку до активизации метода GoalSeek, рассматривается как начальное приближение к искомому корню

    Точность, с которой находится корень и предельно допустимое число итераций, используемых для нахождения корня, устанавливается свойствами MaxChange и MaxIterations объекта Application. Например, определение корня с точностью до 0,0001 максимум за 1000 итераций устанавливается инструкцией:

With Application
  .MaxIterations = 1000
  .MaxChange = 0.0001 
End With

    Вручную эти величины устанавливаются на вкладке Вычисления (Calculation) диалогового окна Параметры (Options), вызываемого командой Сервис | Параметры (Tools | Options).

    Приведем соответствие между аргументами метода GoalSeek и нахождения корня уравнения х2 = 3 на рабочем листе вручную при помощи команды Сервис | Подбор параметра (Tools | Goal Seek).

    • Ячейку A1 отведем под неизвестную. Команда Подбор параметра (Goal Seek) находит корень уравнения методом последовательных приближений, результат которого зависит от начального приближения к корню. Команда Подбор параметра (Goal Seek) воспринимает значение, первоначально введенное в ячейку A1, за начальное приближение. Будем считать, что начальное приближение к корню равно 0. Введем 0 в ячейку A1. В методе GoalSeek аргумент ChangingCell отвечает за ссылку на ячейку, отведенную под неизвестную. В данном случае аргументу ChangingCell присваиваем Range ("A1").
    • Ячейку А2 отведем под левую часть уравнения. При решении уравнения с помощью команды Подбор параметра (Goal Seek) уравнение надо преобразовать к такому виду, чтобы в правой его части содержалась только постоянная, не зависящая от неизвестной, которая должна входить только в его правую часть. В данном случае в ячейку А2 введем формулу =А1^2 (рисунок 1).


      Рис.1. Ввод данных на рабочем листе при решении нелинейного уравнения

          В методе GoalSeek диапазон, к которому применяется метод, отвечает за ссылку на ячейку, отведенную под левую часть уравнения, содержащую неизвестную. В данном случае метод GoalSeek применяется к диапазону Range ("A2").

  1. Выберите команду Сервис | Подбор параметра (Tools | Goal Seek). В появившемся диалоговом окне Подбор параметра (Goal Seek) (рисунок 2):


    Рис.2. Диалоговое окно Подбор параметра

    • В поле Установить в ячейке (Set cell) введите ссылку на ячейку А2;
    • В поле Изменяя значение ячейки (By changing cell) — ссылку на ячейку A1;
    • В поле Значение введите 3. В поле Значение (То value) вводится величина правой части уравнения.
    В методе GoalSeek аргумент Goal отвечает за правую часть уравнения. В данном случае присвоим аргументу Goal значение 3. Таким образом, имеем:
      Range ("A2").GoalSeek Goal:=3, ChangingCell:=Range ("A1")
    
  2. Нажатие кнопки OK вызовет выполнение команды Подбор параметра (GoalSeek), результат расчета которой будет помещен в ячейки A1 (значение корня, в данном случае 1.731856) и А2 (значение левой части уравнения при найденном значении корня, в данном случае оно равно 2 .999325) (рисунок 3).


    Рис.3. Результат выполнения команды

        В силу того, что решение находится приближенно с указанной точностью, в ячейке А2 получилось 2.999325, а не ровно 3. Увеличивая точность, можно найти лучшее приближение к корню.

    На следующем шаге мы рассмотрим метод Sort.




Предыдущий шаг Содержание Следующий шаг