Goal Seek en VBA

Goal Seek en VBA es el proceso por el cual podemos apuntar a la meta que queremos lograr. Este es un proceso como el que muestra cuánto necesitamos hacer para lograr el objetivo establecido. Supongamos que un tren llega diariamente a las 10 a.m. El tren funciona de lunes a viernes entre A y B. Y teniendo en cuenta que el tiempo promedio de llegada de ese tren de A a B es exactamente las 10 AM sin demora. Entonces, si la siguiente es la hora de llegada de ese tren 10:16 AM, 10:01 AM, 9:57 AM, 10:04 AM por 4 días consecutivos de lunes a jueves. Y para mantener el tiempo promedio de las 10 AM, que es el objetivo establecido para ese tren, debe llegar a las 9.45 AM, solo para mantener el tiempo promedio de llegada de las 10 AM. Esto podría ser aún más genial si tenemos algo para automatizar. Viene VBA Goal Seek .

Sintaxis para Goal Seek:

A continuación se muestra la sintaxis de VBA Goal Seek.

Dónde,

  • Rango: la celda de rango objetivo que contiene el límite actual.
  • Objetivo : el límite u objetivo que queremos alcanzar.
  • Cambio de celda: La celda donde veremos el límite requerido para ser alcanzado.

¿Cómo usar Goal Seek en Excel VBA?

Aprenderemos cómo usar Goal Seek en Excel usando el Código VBA.

Puede descargar esta plantilla de Excel VBA Goal Seek aquí - Plantilla de VBA Goal Seek Excel

VBA Goal Seek - Ejemplo # 1

La precisión promedio de que los empleados deben mantener su 95% semanal. A continuación tenemos los datos de precisión del empleado de lunes a jueves con una precisión promedio de 92.25% que se menciona en la celda C8 como se muestra a continuación.

Ahora, según la sintaxis de Goal Seek, tenemos la celda Range que tiene el valor actual para alimentar y el valor Target, que es la precisión promedio del 90% que debe alcanzar ese empleado.

En este ejemplo, donde se supervisa la precisión del trabajo de un empleado. Para esto, siga los pasos a continuación:

Paso 1 : Abra el Módulo desde la pestaña del menú Insertar como se muestra a continuación.

Paso 2: Ahora escriba el procedimiento Sub de VBA Goal Seek como se muestra a continuación. Podemos elegir cualquier nombre para definir esto.

Código:

 Sub Goal_Seek () End Sub 

Paso 3: según la sintaxis, seleccionaremos la celda Rango que contiene el promedio actual que se alimentará. Aquí esa celda es C8.

Código:

 Sub Goal_Seek () Rango ("C8"). End Sub 

Paso 4: Ahora seleccione la función de Búsqueda de objetivos y, según la sintaxis, seleccione el valor objetivo que necesitamos alcanzar. Aquí, ese objetivo es 90% exacto.

Código:

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

Paso 5: Ahora, por fin, seleccione el rango de esa celda, donde necesitamos ver la precisión requerida para lograrlo. Aquí esa celda es C6 con referencia de celda al viernes.

Código:

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

Paso 6: Una vez hecho esto, compilaremos el código y lo ejecutaremos. Veremos que la celda C6 tiene el valor de Celda cambiante como 81. Esto significa que si ese empleado ha logrado alcanzar incluso el 81% de precisión el viernes, fácilmente podrá lograr la precisión del 90%.

VBA Goal Seek - Ejemplo # 2

En este ejemplo, tenemos datos del tiempo de respuesta (TAT o tiempo para completar la actividad) de algún empleado de un equipo que realiza la misma tarea todos los días. 5 empleados realizan la misma actividad de lunes a viernes. El tiempo objetivo se establece para completar esa actividad es de 50 minutos. Y necesitamos encontrar cuánto tiempo necesita cada empleado para mantener el tiempo promedio de finalización en 50 minutos o menos. Para esto, siga los pasos a continuación:

Paso 1: en el Módulo, escriba el subprocedimiento para VBA Goal Seek como se muestra a continuación.

Código:

 Sub Goal_Seek2 () End Sub 

Paso 2: defina una variable por la cual podamos contar desde donde necesitamos comenzar Goal Seek como Long.

Código:

 Sub Goal_Seek2 () Dim A As Long End Sub 

Paso 3: Ahora defina nuevamente 2 variables más usando DIM con el tipo de datos Rango . Primero se usará para rastrear el promedio final actual y el segundo se usará para vincular la celda de referencia donde queremos la salida.

Código:

 Sub Goal_Seek2 () Dim A como Long Dim FinalAvg como Range Dim Reference como Range End Sub 

Paso 4: Defina otra variable como Entero para establecer el Objetivo que queremos lograr.

Código:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg As Range Dim Reference As Range Dim Target As Integer End Sub 

Paso 5: Aquí nuestro objetivo es 50 minutos, así que configure la variable Objetivo con este valor.

Código:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg As Range Dim Reference As Range Dim Target As Integer Target = 50 End Sub 

Paso 6: Abra un bucle For-Next como se muestra a continuación.

Código:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg As Range Dim Reference As Range Dim Target As Integer Target = 50 For Next A End Sub 

Paso 7: Ahora seleccione el rango de esas celdas que tiene los valores. Aquí esas filas son de 3 a 7 números.

Código:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg As Range Dim Reference As Range Dim Target As Integer Target = 50 For A = 3 To 7 Next A End Sub 

Paso 8: Establezca el promedio final de donde queremos llegar. Aquí esa celda está en la fila 9.

Código:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg As Range Dim Reference As Range Dim Target As Integer Target = 50 For A = 3 To 7 Set FinalAvg = Cells (9, A) Next A End Sub 

Paso 9: establezca de manera similar el rango de celdas de referencia, donde queremos ver el valor de búsqueda de objetivos para lograr el objetivo y esa fila de celdas es 7.

Código:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg As Range Dim Reference As Range Dim Target As Integer Target = 50 For A = 3 To 7 Set FinalAvg = Cells (9, A) Set Reference = Cells (7, A) Next A End Sub 

Paso 10: Por último, aplique el VBA Goal Seek con la sintaxis adecuada como se muestra a continuación.

Código:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg As Range Dim Reference As Range Dim Target As Integer Target = 50 For A = 3 To 7 Set FinalAvg = Cells (9, A) Set Reference = Cells (7, A) FinalAvg.GoalSeek Objetivo, Referencia Siguiente A Fin Sub 

Paso 11: Ahora compile el código completo presionando la tecla de función F8 y ejecútelo si no se encuentra ningún error.

Veremos, en la fila 7 con la ayuda de Goal Seek, obtendremos el tiempo en minutos que cada empleado tiene que lograr el viernes para mantener el promedio de 50 minutos o menos.

Así es como funciona VBA Goal Seek.

Pros de Excel VBA Goal Seek

  • VBA Goal Seek es bastante útil para rastrear el rendimiento de varias maneras.
  • Esto también se puede usar en muchos trabajos estadísticos donde necesitamos rastrear y apuntar al límite de datos que queremos lograr.
  • Esto indica el valor exacto que la persona necesita alcanzar para alcanzar el objetivo.

Cosas para recordar

  • Esto se puede usar en Excel y VBA tanto.
  • La celda de resultado con función promedio u otra debe tener siempre la fórmula.
  • Podemos ingresar el valor objetivo en Objetivo en la sintaxis de Búsqueda de objetivos o también podemos definir esto anteriormente por separado.
  • Podemos cambiar y actualizar el valor objetivo según nuestras necesidades y requisitos.
  • Esta tarea no se puede realizar registrando la opción de macros disponible en la pestaña del desarrollador.
  • Una vez hecho esto, recuerde guardar el archivo de Excel en formato de habilitación de macro para retener el código escrito.

Artículo recomendado

Esta es una guía para VBA Goal Seek. Aquí discutimos cómo usar Goal Seek en Excel VBA junto con ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. Colección VBA (Ejemplos)
  2. Declaraciones VBA IF | Plantillas Excel
  3. ¿Cómo utilizar la función de clasificación de Excel VBA?
  4. VBA While Loop (Ejemplos con plantilla de Excel)
  5. Función de entorno VBA

Categoría: