miércoles, 22 de enero de 2014

Macro para traspaso y clasificación de informacion

La macro fue diseñada con el objetivo de facilitar la búsqueda de productos para nuestro proyecto final, puesto que se cuenta con una gran variedad de estos los cuales están clasificados de acuerdo a familias de productos. Aquí es donde radica su utilidad, por lo que puede ser aplicado para segmentos en donde la diferenciación de cada producto es muy alta y nos sirve para darle un orden en la base de datos. También se le agregaron macros para identificar cada uno de los atributos de los productos, de este modo con un solo clic podemos apreciar una lista con cada uno de las especificaciones.
En primer lugar para poder obtener en una nueva hoja de cálculo la lista de productos y de los atributos posibles, fue utilizada la función “While” en conjunto con la función “If” la cual nos es útil para traspasar información siempre y cuando se cumplan las condiciones especificadas, en este primer caso se requiere que las celdas no estén vacías y sus valores sean distintos de cero, mientras que el “While” nos permite realizar este traspaso de información uno por uno hacia abajo en la columna:
Worksheets("Hoja1").Activate
c = 3
a = 5
f = 2
While (f < 3000)
If Cells(f, 2) <> 0 And Cells(f, 2) <> "                 " Then
                Worksheets("Hoja2").Cells(a, c) = Cells(f, 2)   
                End If
                f = f + 1
                a = a + 1
En donde “f” representa la fila en la cual se empieza a realizar el traspaso de información de la hoja de origen, mientras que a representa la fila destinataria en la nueva hoja de cálculo. Adicional a esto se le agrego la función para limpiar la pantalla de datos para que esta se pueda realizar desde cero cuando se estime conveniente. Luego al agregarle botones de ejecución para las macros el Excel queda de la siguiente forma:



Posterior a esto, como los productos que utilizaremos en nuestro proyecto se clasifican en : Valvulas, Accesorio de Calderas, Instrumentacion y Automatizacion; para facilitar la búsqueda de estos según categorías se le adicionó un condicional para que estos se traspasen en columnas distintas según la familia a la cual pertenecen. Para esto fue requerido adicionar tambien comandos para eliminar espacios en blanco y de ordenación apra que estos se ubiquen sin depende de su orientación en la hoja de origen; para esto fue útil programas eliminación de duplicados y de ordenamiento:

Worksheets("Hoja1").Activate
c = 2
a = 4
f = 2
While (f < 3000)
                If Cells(f, 5).Value = 1 And Cells(f, 2) <> 0 And Cells(f, 2) <> "                 " Then     
                Worksheets("Hoja3").Cells(a, c) = Cells(f, 2)      
                End If
                f = f + 1
                a = a + 1
                Wend
Worksheets("Hoja3").Activate
ActiveSheet.Range("$B$4:$B$1520").RemoveDuplicates Columns:=1, Header:=xlNo
                ActiveWorkbook.Worksheets("Hoja3").Sort.SortFields.Clear
                ActiveWorkbook.Worksheets("Hoja3").Sort.SortFields.Add Key:=Range("B4"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                 With ActiveWorkbook.Worksheets("Hoja3").Sort
                .SetRange Range("B4:B1520")
                .Header = xlGuess
                 .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
                End With
Al igual que en el caso anterior, se le agrego una macro para limpiar la hoja para que se pueda utilizar desde cero, además de agregarle un botón de ejecución de la clasificación de productos, quedando de la siguiente forma:





En mi opinión, si bien la programación es bastante simple, creo que el alcance de estas funciones puede otorgar un manejo de información mucho más eficiente, organizando productos dependiendo los atributos que estos posean, que facilite de esta forma la búsqueda de estos con mayor rapidez dependiendo sus funcionalidades y además permitiendo el traspaso de información de manera automatizada.

https://www.dropbox.com/s/pson9hg9sfwm9sy/Macros%20Blog.xlsm

En esta direccion pueden descargar el excel habilitado para macro, para que puedan ver el detalle de la programacion, es bastante simple si se realiza un correcto uso de variables locales. Saludos.

No hay comentarios:

Publicar un comentario