Macro de Excel para utilizar Vlookup o Buscarv
Hola amigos, bienvenidos a un nuevo post de nuestro blog de programación para todos.
La mayoría utilizamos Excel en nuestros trabajos y una de las funciones mas utilizadas es el Vlookup o el BuscarV que hace la maravillosa actividad de buscar un dato en una tabla y en base a un indice podemos obtener otra columna de la tabla, esto sirve mucho para cruzar información o simplemente para validar si un valor de una tabla esta en otra tabla.
Como siempre buscamos hacer las cosas más rápido y ser los mejores en nuestra aldea Godín, les quiero compartir un ejemplo de una Macro que cuenta con:
La primer hoja tiene una lista de Productos a vender
En la segunda Hoja tiene los pedidos de los clientes con su código de cliente y el item del pedido, la cantidad pedida, fecha de la venta
Lo que va hacer nuestra Macro es en la primer hoja nos calcule la cantidad total vendida por cada item y el monto total de venta
Antes de ver el programa, les explico como habilitar la pantalla de desarrollo de software en Excel
Configurar Excel para Macros
- Habilitar Pestaña de Desarrollo
- En la pestaña archivo , vaya a Opciones> personalizar la cinta de opciones.
- En Personalizar la cinta de opciones y Pestañas principales, active la casilla Programador.
- Presionamos las teclas Alt + F11 al mismo tiempo, deben ver una pantalla así:
Una vez, teniendo estos requisitos podemos empezar con la magia :)
Código de la Macro
Private Sub CommandButton1_Click()
Dim Fila As Long
Dim Fila2 As Long
Dim Col As Integer
Col = 3 ' columna C
Fila = 4
'coloca montos totales en hoja2
Do While Sheet2.Cells(Fila, "B") <> ""
Call vlookup_data(Sheet2.Cells(Fila, "B").Value, Col, Fila)
Fila = Fila + 1
Loop
Fila = 3
'consolidado de venta
Do While Sheet1.Cells(Fila, "A") <> ""
Fila2 = 4
Do While Sheet2.Cells(Fila2, "B") <> ""
If Sheet2.Cells(Fila2, "B") = Sheet1.Cells(Fila, "A") Then
'sumamos las cantidades vendidas por item
Sheet1.Cells(Fila, "D") = Sheet1.Cells(Fila, "D") + Sheet2.Cells(Fila2, "C")
'sumamos lo montos
Sheet1.Cells(Fila, "E") = Sheet1.Cells(Fila, "E") + Sheet2.Cells(Fila2, "E")
End If
Fila2 = Fila2 + 1
Loop
Fila = Fila + 1
Loop
End Sub
Sub vlookup_data(val_look As String, val_col As Integer, val_fila As Long)
Dim resultado As Long
Dim temp_col As Integer
resultado = 0
On Error Resume Next
resultado = Application.WorksheetFunction.VLookup(val_look, Sheet1.Range("A3:C10"), val_col, False)
If Err.Number <> 0 Then
End If
On Error GoTo 0 ''
If Err.Number = 0 Then
Sheet2.Cells(val_fila, "E").Value = Sheet2.Cells(val_fila, "C").Value * resultado
End If
End Sub
Dim Fila As Long
Dim Fila2 As Long
Dim Col As Integer
Col = 3 ' columna C
Fila = 4
'coloca montos totales en hoja2
Do While Sheet2.Cells(Fila, "B") <> ""
Call vlookup_data(Sheet2.Cells(Fila, "B").Value, Col, Fila)
Fila = Fila + 1
Loop
Fila = 3
'consolidado de venta
Do While Sheet1.Cells(Fila, "A") <> ""
Fila2 = 4
Do While Sheet2.Cells(Fila2, "B") <> ""
If Sheet2.Cells(Fila2, "B") = Sheet1.Cells(Fila, "A") Then
'sumamos las cantidades vendidas por item
Sheet1.Cells(Fila, "D") = Sheet1.Cells(Fila, "D") + Sheet2.Cells(Fila2, "C")
'sumamos lo montos
Sheet1.Cells(Fila, "E") = Sheet1.Cells(Fila, "E") + Sheet2.Cells(Fila2, "E")
End If
Fila2 = Fila2 + 1
Loop
Fila = Fila + 1
Loop
End Sub
Sub vlookup_data(val_look As String, val_col As Integer, val_fila As Long)
Dim resultado As Long
Dim temp_col As Integer
resultado = 0
On Error Resume Next
resultado = Application.WorksheetFunction.VLookup(val_look, Sheet1.Range("A3:C10"), val_col, False)
If Err.Number <> 0 Then
End If
On Error GoTo 0 ''
If Err.Number = 0 Then
Sheet2.Cells(val_fila, "E").Value = Sheet2.Cells(val_fila, "C").Value * resultado
End If
End Sub
Ejecución de la Macro
Para mostrarles como se va ejecutando la Macro, en la pantalla donde esta nuestro programa podemos marcar los renglones donde queremos que se detenga , dando doble click del lado izquierdo sobre la parte izquierda y se coloca un punto rojo
En la primera parte busca en cada linea de la hoja 2 y busca el precio que le corresponde en la primer hoja
En el siguiente paso nos va ir sumando por cada item la cantidad total vendida y la el monto total
Al final en nuestra primer hoja tendremos los datos consolidados
En la primera parte busca en cada linea de la hoja 2 y busca el precio que le corresponde en la primer hoja
En el siguiente paso nos va ir sumando por cada item la cantidad total vendida y la el monto total
Al final en nuestra primer hoja tendremos los datos consolidados
Este es un ejemplo pero puede utilizar o ajustar el programa a sus necesidades, espero les haya gustado este post y nos compartan. Recuerden si no saben que es Vlookup o quieren aprender nuevas funciones de Excel, contacten a Debite
No olvide compartirnos y seguirnos en este blog o en Facebook.
Les dejo las ligas de otras macros en nuestro blog
No olvide compartirnos y seguirnos en este blog o en Facebook.
Comentarios
Publicar un comentario