Поиск цели в VBA

Поиск цели в VBA - это процесс, с помощью которого мы можем достичь цели, которой хотим достичь. Это процесс, который показывает, сколько нам нужно сделать, чтобы достичь целевого набора. Предположим, поезд прибывает ежедневно в 10 часов утра. Поезд курсирует с понедельника по пятницу между А и В. И, учитывая, что среднее время прибытия этого поезда из А в В составляет ровно 10 часов утра без каких-либо задержек. Таким образом, если следующее время прибытия этого поезда - 10:16, 10:01, 9:57, 10:04 в течение 4 дней подряд с понедельника по четверг. И чтобы поддерживать среднее время 10:00, которое является целью, установленной для этого поезда, оно должно прибыть в 9:45, просто чтобы поддерживать среднее время прибытия в 10:00. Это может быть даже круче, если у нас есть что автоматизировать. Приходит VBA Goal Seek .

Синтаксис для поиска цели:

Ниже приведен синтаксис поиска цели VBA.

Где,

  • Диапазон: Целевая ячейка диапазона, которая содержит текущий предел.
  • Цель : предел или цель, которую мы хотим достичь.
  • Смена ячейки: ячейка, в которой мы увидим требуемый предел, который будет достигнут.

Как использовать поиск цели в Excel VBA?

Мы узнаем, как использовать поиск цели в Excel с помощью кода VBA.

Вы можете скачать этот шаблон Excel для поиска целей VBA здесь - Шаблон Excel для поиска целей VBA

VBA Goal Seek - Пример № 1

Средняя точность, которую сотрудники должны поддерживать на 95% в неделю. Ниже мы располагаем данными о точности работника с понедельника по четверг со средней точностью 92, 25%, которая указана в ячейке C8, как показано ниже.

Теперь, согласно синтаксису Goal Seek, у нас есть ячейка Range, в которой есть текущее значение для подачи и Target value, то есть средняя точность 90%, которая должна быть достигнута этим сотрудником.

В этом примере, где точность работы сотрудника находится под контролем. Для этого выполните следующие шаги:

Шаг 1. Откройте модуль на вкладке меню «Вставка», как показано ниже.

Шаг 2: Теперь напишите процедуру процедуры поиска цели VBA, как показано ниже. Мы можем выбрать любое имя, чтобы определить это.

Код:

 Sub Goal_Seek () End Sub 

Шаг 3: В соответствии с синтаксисом, мы выберем ячейку Range, которая содержит текущее среднее значение для подачи. Вот эта ячейка С8.

Код:

 Диапазон Sub Goal_Seek () ("C8"). End Sub 

Шаг 4: Теперь выберите функцию «Поиск цели» и в соответствии с синтаксисом выберите целевое значение, которого нам нужно достичь. Здесь эта цель на 90% точна.

Код:

 Sub Goal_Seek () Range ("C8"). GoalSeek Goal: = 90 End Sub 

Шаг 5: Теперь, наконец, выберите диапазон этой ячейки, где мы должны увидеть требуемую точность, которая должна быть достигнута. Вот эта ячейка C6 со ссылкой на пятницу.

Код:

 Sub Goal_Seek () Range ("C8"). GoalSeek Goal: = 90, ChangingCell: = Range ("C6") End Sub 

Шаг 6: Теперь, когда все сделано, мы скомпилируем код и запустим его. Мы увидим, что ячейка C6 имеет значение «Изменяющаяся ячейка», равное 81. Это означает, что если этому сотруднику удалось достичь даже 81% точности в пятницу, то он легко сможет достичь точности 90%.

VBA Goal Seek - Пример № 2

В этом примере у нас есть данные о времени поворота (TAT или время выполнения задания) какого-либо сотрудника команды, выполняющего одну и ту же задачу каждый день. 5 сотрудников выполняют одинаковую работу с понедельника по пятницу. Заданное время для завершения этого действия составляет 50 минут. И нам нужно выяснить, сколько времени требуется каждому сотруднику, чтобы поддерживать среднее время завершения 50 минут или меньше. Для этого выполните следующие шаги:

Шаг 1: В модуле напишите подпроцедуру для поиска цели VBA, как показано ниже.

Код:

 Sub Goal_Seek2 () End Sub 

Шаг 2: Определите переменную, по которой мы можем рассчитывать, откуда мы должны начать поиск цели как Лонг.

Код:

 Sub Goal_Seek2 () Dim A As Long End Sub 

Шаг 3: Теперь снова определите еще 2 переменные, используя DIM с типом данных Range . Первый будет использоваться для отслеживания текущего итогового среднего, а второй будет использоваться для связывания эталонной ячейки, в которой мы хотим получить результат.

Код:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg в качестве эталона яркости диапазона в качестве Sub End 

Шаг 4: Определите другую переменную как Integer, чтобы установить цель, которую мы хотим достичь.

Код:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg в качестве эталона Dim диапазона в качестве цели Dim диапазона в качестве целочисленного Sub Sub 

Шаг 5: Здесь наша цель - 50 минут, поэтому установите переменную Target с этим значением.

Код:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg в качестве эталона Dim диапазона в качестве цели Dim диапазона в качестве цели Integer = 50 End Sub 

Шаг 6: Откройте цикл For-Next, как показано ниже.

Код:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg в качестве эталона Dim диапазона в качестве цели Dim диапазона в качестве цели Integer = 50 для следующего A Sub Sub 

Шаг 7: Теперь выберите диапазон тех ячеек, которые имеют значения. Здесь эти строки от 3 до 7 чисел.

Код:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg в качестве эталона Dim диапазона в качестве цели Dim диапазона в качестве цели Integer = 50 для A = от 3 до 7 Next A End Sub 

Шаг 8: Установите окончательное среднее значение, откуда мы хотим получить. Вот эта ячейка в строке 9.

Код:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg в качестве ссылки Dim диапазона в качестве цели Dim Range в качестве цели Integer = 50 Для A = от 3 до 7 Установите FinalAvg = Cells (9, A) Далее A End Sub 

Шаг 9: Аналогичным образом установите диапазон опорных ячеек, где мы хотим видеть значение поиска цели для достижения цели, и эта строка ячеек равна 7.

Код:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg в качестве эталона Dim диапазона в качестве цели Dim диапазона в качестве целочисленной цели = 50 для A = от 3 до 7 Установить FinalAvg = Cells (9, A) Установить эталон = Cells (7, A) Next A End Sub 

Шаг 10: Наконец, примените VBA Seal Seek с правильным синтаксисом, как показано ниже.

Код:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg в качестве задания Dim для диапазона в качестве цели Dim для диапазона в качестве цели Integer = 50 Для A = от 3 до 7 Установить FinalAvg = Cells (9, A) Установить ссылку = Cells (7, A) FinalAvg.GoalSeek Target, Reference Next A End Sub 

Шаг 11: Теперь скомпилируйте полный код, нажав функциональную клавишу F8, и запустите после этого, если ошибки не обнаружены.

Мы увидим, что в строке 7 с помощью «Поиск цели» мы получим время в минутах, которое каждый сотрудник должен достичь в пятницу, чтобы поддерживать в среднем 50 минут или меньше.

Так работает VBA Goal Seek.

Преимущества Excel VBA Поиск цели

  • VBA Goal Seek весьма полезен для отслеживания производительности различными способами.
  • Это также может быть использовано во многих статистических работах, где нам нужно отслеживать и нацеливать предел данных, которого мы хотим достичь.
  • Это говорит о точной ценности, которую человек должен достичь, чтобы достичь цели.

То, что нужно запомнить

  • Это можно использовать как в Excel, так и в VBA.
  • Ячейка результата со средней или другой функцией всегда должна иметь формулу.
  • Мы можем ввести целевое значение в Goal в синтаксисе Goal Seek, иначе мы можем определить это и раньше отдельно.
  • Мы можем изменить и обновить целевое значение в соответствии с нашими потребностями и требованиями.
  • Эта задача не может быть выполнена путем записи макроса, доступного на вкладке разработчика.
  • После этого не забудьте сохранить файл Excel в формате макроса, чтобы сохранить записанный код.

Рекомендуемая статья

Это руководство по поиску целей VBA. Здесь мы обсудим, как использовать Goal Seek в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

  1. Коллекция VBA (Примеры)
  2. VBA IF Заявления | Шаблоны Excel
  3. Как использовать функцию сортировки Excel VBA?
  4. VBA While Loop (Примеры с шаблоном Excel)
  5. VBA Environ Function

Категория: