Lección 16: Función FOR en VBA para Excel.

excel-for-vba

Escrito por Administrador

10 de septiembre de 2021

En esta lección vas a aprender a utilizar la función de VBA FOR en Microsoft Excel para realizar bucles o iteraciones. Después de la función IF, es la más importante y seguramente será indispensable en la mayor parte de macros que programes.

Con ella seremos capaces, por ejemplo, de recorrer las filas o columnas de una hoja buscando un dato o de realizar la misma operación las veces que deseemos.

La sintaxis de la función de VBA FOR en Excel, está formada por varios comandos y es la siguiente:

For i = inicio to final

‘Acciones a realizar

Next

Las variables inicio y final marcan desde qué número comenzamos a contar (inicio) y en qué número terminamos la cuenta (final).

Por ejemplo, si escribimos:

For i = 1 to 50

‘Acciones a realizar

Next

El sistema entra en un bucle donde va a contar desde 1 hasta 50 (en este caso de uno en uno) y en cada uno de esos 50 pasos va a ejecutar las “acciones a realizar”.

Así mismo, si queremos contar de dos en dos simplemente escribimos:

For i = 1 to 50 step 2

‘Acciones a realizar

Next

En cambio, si queremos contar hacia atrás de tres en tres escribimos:

For i = 50 to 1 step -3

‘Acciones a realizar

Next

Seguramente, con ejemplos prácticos sobre cómo utilizar la función de VBA FOR en Excel, te quede todo esto más claro.

En primer lugar, crea un libro nuevo, abre el editor VBA e inserta 5 módulos. Después, copia las siguientes macros en cada uno de ellos.

 

Macro 1. Rellenar un rango automáticamente.

Sub Leccion16_1()

'Macro que rellena el rango C1-C20 con el número de fila que le corresponde

'Cuenta desde i=1 hasta i=20

For i = 1 To 20     

'Asigna el valor del número de iteración a la celda (i,"C")                                                         

Cells(i, "C").Value = i      

'Aumenta una unidad el valor de i                                         

Next                                                                                 

End Sub

Macro 2. Rellenar un rango automáticamente alternando filas.

Sub Leccion16_2()

'Macro que rellena el rango C1-C20 con el número de fila que le corresponde solo en las filas impares

'Borramos el contenido de las celdas del rango C1-C20

Range("C1:C20").ClearContents  

'Cuenta desde i=1 hasta i=20                    

For i = 1 To 20 Step 2       

'Asigna el valor del número de iteración a la celda (i,"C")                                          

Cells(i, "C").Value = i        

'Aumenta una unidad el valor de i                                         

Next                                                                                 

End Sub

Macro 3. Buscar una cadena de texto en una columna y mostrar ventana de texto con el valor de la fila en que se encuentra.

Sub Leccion16_3()

'Macro que busca la palabra Ana en la columna G desde la fila 11 hacia atrás

'Cuenta desde i = 11 hasta i = 1 (hacia atrás)

For i = 11 To 1 Step -1   

'Si el contenido de la celda es ANA entonces                                                 

If Cells(i, "G").Value = "Ana" Then 

'Abrimos un cuadro de diálogo indicando en qué fila se encuentra                                      

MsgBox "Encontrado Ana en fila: " & i                               

End If

'Disminuimos una unidad el valor de i

Next                                                                               

End Sub

Macro 4. Contar el número de veces que se repite una palabra en un rango.

Sub Leccion16_4()

'Macro que cuenta el número de palabras Ana en el rango C1-C20

'Inicializamos la variable a 0

numero = 0       

'Cuenta desde i = 11 hasta i = 1 (hacia atrás)                                    

For i = 1 To 20          

'Si el contenido de la celda es ANA entonces                                                 

If Cells(i, "G").Value = "Ana" Then 

'Abrimos un cuadro de diálogo indicando en qué fila se encuentra                                     

numero = numero + 1                                                             

End If

'Aumentamos una unidad el valor de i

Next                

'Abrimos un cuadro de diálogo indicando el número de palabras Ana                                                             

MsgBox "Número de palabras Ana: " & numero            

End Sub

Macro 5. Borrar el contenido de un rango de celdas.

Sub Leccion16_5()

'Macro que restablece la hoja

'Borramos el contenido de las celdas del rango C1-C20

Range("C1:C20").ClearContents                             

End Sub

En segundo lugar, rellena la hoja de cálculo como aparece en la figura. Por último, tendrás que crear 5 botones y asignarles las macros anteriores.

A continuación, te dejo un par de enlaces donde explico cómo configurar Microsoft Excel para el uso de macros y cómo asignar macros a botones, por si te interesan.

total-operaciones-matematicas-macros

Como resultado, la primera de las macros rellena las celdas del 1 al 20 de la columna C con el número de fila correspondiente.

En la primera iteración i = 1, luego:

Cells(i, "C").Value = i        

Y, en este caso es:

Cells(1, "C").Value = 1

Así que, asignamos el valor 1 a la celda C1.

En la segunda iteración i = 2, luego:

Cells(2, "C").Value = 2

Del mismo modo, asignamos el valor 2 a la celda C2.

Y así sucesivamente hasta el valor 20, fácil ¿no?

total-operaciones-matematicas-macros

La segunda de las macros hace lo mismo, pero solo rellena las filas impares. A continuación, vamos a ver cómo funciona.

For i = 1 To 20 Step 2

Con esta instrucción empezamos en 1 y terminamos en 20 como antes, pero dando saltitos de 2 en 2.

En la primera iteración i = 1, luego:

Cells(i, "C").Value = i        

Y, en este caso es:

Cells(1, "C").Value = 1

Así que, asignamos el valor 1 a la celda C1.

En la segunda iteración i = 3 (recuerda que vamos sumando de dos en dos), luego:

Cells(3, "C").Value = 3

Del mismo modo, asignamos el valor 3 a la celda C3.

Y así, sucesivamente, hasta el valor 19. El siguiente valor sería el 21 que sale fuera del límite (20) y terminaría el bucle.

total-operaciones-matematicas-macros

Con la tercera macro, vamos a buscar la palabra “Ana” en la columna G desde la fila 11 hacía atrás.

Empezamos la iteración con i = 11, y comprobamos si la celda G11 contiene la palabra “Ana”. Como no es el caso, no hacemos nada y restamos una unidad a i.

En la segunda iteración i = 10, y en la celda G10 tampoco encontramos la palabra Ana, luego no hacemos nada y restamos una unidad a i.

Por fin, en la tercera iteración (i = 9), encontramos la palabra Ana en la celda G9, y mostramos un cuadro de diálogo con la fila donde hemos encontrado el resultado.

total-operaciones-matematicas-macros

En el ejemplo, esto sucede además para las filas 6, 4 y 1.

La cuarta macro va a hacer un recuento de palabras “Ana” en el rango C1-C20.

Antes de nada, inicializamos la variable número a 0.

En la primera iteración i = 1, luego:

If Cells(i, "G").Value = "Ana" Then               

Sería:

If Cells(1, "G").Value = "Ana" Then                

El valor de G1 es “Ana”, luego se cumple y se realiza la operación:

numero = numero + 1 

luego,

numero = 0 + 1 = 1

Sumamos una unidad a i.

En la segunda iteración i =2, G2 no es “Ana”, luego no se cumple.

Sumamos una unidad a i.

En la tercera iteración (i = 3) tampoco coincide el valor de la celda G3 con la palabra “Ana”.

En la cuarta iteración (i = 4), G4 es igual a “Ana”, luego realizamos la operación:

numero = numero + 1

quedando,

numero = 1 + 1 = 2

Sumamos una unidad a i.

En la quinta iteración (i = 5) tampoco coincide el valor de la celda G5 con la palabra “Ana”.

En la sexta iteración (i = 6), G6 es igual a “Ana”, luego realizamos la operación:

numero = numero + 1

quedando,

numero = 2 + 1 = 3

Sumamos una unidad a i.

Hasta la novena iteración (i = 9) no vuelve a coincidir el valor de la columna G con “Ana”.

Realizaríamos la operación:

numero = numero + 1

quedando,

numero = 3 + 1 = 4

Sumamos una unidad a i.

Ya no existen más coincidencias, luego el total del número de palabras “Ana” que hay en el rango es 4.

total-operaciones-matematicas-macros

La quinta macro restablece la hoja por si se quiere volver a repetir la operación con el resto de macros.

Una vez conocemos las funciones IF y FOR vamos a ir subiendo el nivel de programación paulatinamente y elaborando códigos de programación cada vez más complejos, aunque aún nos quedan algunos conceptos y funciones que aprender.

Con esto llegamos al final de la decimosexta lección, en la que has aprendido a usar la función de VBA FOR para Excel.

Por último, desear que te esté gustando el curso y pedirte que me plantees cualquier duda que te surja. También puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario, soy todo oídos. Nos vemos en el próximo capítulo.

Descarga el archivo del ejemplo

« L15. Buscar un valor en una columna Excel (Find).

L17. Comando AdvanceFilter Unique. »

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto