Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

DO LOOP aplicado a la localización de planta

| 2 comentarios

DESCRIPCIÓN

La mayoría de las empresas tienen distintos proveedores los cuales les brindan la materia prima o insumos para sus diferentes procesos. Sin embargo,  no todos los proveedores que posee una empresa se encuentran en un mismo lugar, estos pueden estar ubicados en distintos lugares e incluso a largas distancias, lo que representaría un incremento de costos en cuanto al transporte de los mismos u otros factores que afectan la producción del producto y su costo.

Es así que cuando de desea localizar una nueva planta para una empresa, se tiene en cuenta la ubicación de sus proveedores de forma que se evalúa los lugares en los cuales debería localizarse la nueva planta. De esta manera, uno de los métodos para localizar una planta es el método del “centro de gravedad” el cual, teniendo en cuenta la localización de cada uno de los proveedores expresados mediante unas coordenadas (x,y), se obtiene una coordenada que me indica la ubicación estratégica de la nueva planta de forma que la distancia a cada una de los proveedores se adecue a la cantidad de productos que le proveen  a la empresa; es decir, este método se asemeja a un promedio ponderado, en donde los “pesos” están representados por la cantidad de materia prima o insumos que la empresa requiere de un proveedor en particular, por lo que su ubicación estará más cerca a esta misma.

Para aplicar el método gráficamente, se debe de asignar coordenadas a la ubicación de cada uno de los proveedores, teniendo en cuenta un origen. Luego, se aplica el método del centro de gravedad y finalmente se obtiene las coordenadas de las mismas, lo que indicaría la ubicación de la nueva planta.

CÓDIGO

Por otro lado, la macro que se presentará a continuación permitirá obtener las coordenadas de ubicación de la nueva planta. Para ello, se ha utilizado la instrucción DO LOOP para poder implementar el método explicado anteriormente. Como bien se conoce esta instrucción funciona como un bucle; es decir, cumple una acción repetidas veces hasta que ya no satisfaga una condición. Para emplearla, se puede optar por dos opciones: Do While y Do Until. La primera se realiza para repetir la actividad MIENTRAS que se realice la condición que se especifique; en cambio, la segunda se realiza para que la acción se repita HASTA que la condición se cumpla. Asimismo, al finalizar las acciones que se debe de realizar, es decir al final de la instrucción, se debe de escribir Loop.

Sub Centro_Gravedad()
Worksheets("Hoja1").Select
ult = Cells(Rows.Count, 1).End(xlUp).Row
i = 2
cant = 0
a = 0
b = 0
Do While i <= ult
x = Cells(i, 2)
y = Cells(i, 3)
cant1 = Cells(i, 4)
a1 = x * cant1
b1 = y * cant1
Cells(i, 5) = a1
Cells(i, 6) = b1
cant = Cells(i, 4) + cant
a = x * cant1 + a
b = y * cant + b
i = i + 1
Loop
Cells(4, 9) = Round(a / cant, 2)
Cells(5, 9) = Round(b / cant, 2)
End Sub

EJEMPLO

En el siguiente archivo de Excel adjunto se tiene una lista de los diferentes proveedores que tiene una empresa con sus respectivas ubicaciones (coordenadas x,y) y así como la cantidad de materia prima que los proveedores proveen. Debido a que la lista de proveedores es variable, se ha utilizado el artificio de la última fila para controlarla.

DO LOOP_GRAVEDAD

WILDER MANTILLA SANGAY

2 comentarios

  1. Un Pequeño error:
    b = y * cant + b

    Debe decir
    b = y * cant1 + b

    Gracias

    Saludos

  2. Muchas gracias por todo. este es el mejor web de VBA que hay. Como seria posible estudiar mas profundamente este tema. estoy bien impresionado con la dicactica aqui empleada, en ingles no hay un website como este. Felicitationes

Deja una respuesta

Los campos requeridos estan marcados con *.