martes, 1 de septiembre de 2015

Actualizar tablas en Excel

En el siguiente ejercicio vamos a ver como actualizar tablas en excel. Nos centraremos en modificar unos precios con código VBA. Modificaremos los valores de la primera tabla teniendo en cuenta los datos de la segunda tabla. Cada vez que queramos hacerlo pulsaremos un botón.

Partimos de una tabla de precios que queremos modificar de acuerdo con los valores de la segunda tabla.
actualizar-tablas-en-excel

Para lograr esto vamos a introducir el siguiente código VBA:

Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim j As Integer
    
    For i = 2 To WorksheetFunction.CountA(Range("A:A"))
        For j = 2 To WorksheetFunction.CountA(Range("D:D"))
            If Cells(i, 1).Value = Cells(j, 4).Value Then
                Cells(i, 2).Value = Cells(j, 5).Value
            End If
        Next j
    Next i
End Sub

En primer lugar vamos a insertar un botón donde implementaremos estas líneas de código.

En la ficha programador elegimos el botón de comando marcado en rojo, tal como vemos en la imagen. Si la ficha de programador no está activa, lo podremos hacer de la siguiente forma:
Iremos a Archivo/Opciones y en la ventana que se abre en el panel izquierdo donde marcaremos Personalizar cinta de opciones y a continuación en la ficha programador.
Pulsamos el botón y arrastrando el botón sobre la hoja tenemos el botón:


Para introducir el código haremos doble clic sobre el botón y se abre la ventana de Visual Basic.



Escribiremos las instrucciones entre la línea de Private y la de End Sub. De esa forma cuando hagamos clic en el botón se ejecutará el contenido de ese procedimiento.
Comentando un poco el contenido del programa, en primer lugar declaramos dos variables, i y j con Dim de tipo entero:

    Dim i As Integer
    Dim j As Integer

Una vez declaradas utilizamos dos bucles for para ir recorriendo ambas tablas, en caso de encontrar el mismo producto en ambas tablas cambiamos el valor del precio asignando el precio de la segunda a la primera tabla. La función CountA nos da el número total de celdas ocupadas que tenemos en un conjunto de celdas. En este caso el for recorrerá solo las celdas desde la segunda fila hasta el final de las tablas gracias a que conocemos cuantas celdas ocupadas tenemos. La variable i recorre la primera tabla y la variable j recorre la segunda tabla.
También modificamos el texto del botón con la propiedad Caption. Para ver las propiedades del botón pulsamos en propiedades en el grupo de Controles de la barra Programador. Dentro de misma tenemos bastantes propiedades y en Caption escribiremos Actualizar precios:


De esta forma el aspecto del botón cambiará por algo mas cercano y que nos indica lo que hará cuando lo pulsemos:


Cerramos la ventana de propiedades y pulsamos en modo Diseño para que esté operativo el botón:



Después solo basta hacer un solo clic en el botón para tener los precios como queríamos:


Espero que les haya resultado útil este ejemplo en el que hemos modificado varios datos con dos  tablas en excel haciendo clic en un botón.

Actualizar tablas en Excel

En el siguiente ejercicio vamos a ver como actualizar tablas en excel. Nos centraremos en modificar unos precios con código VBA. Modificare...