Lección 8: Insertar/eliminar filas y columnas automáticamente con macros.

Escrito por Administrador

18 de septiembre de 2021

En esta lección, vas a aprender los comandos para insertar y eliminar filas y columnas de manera automática a tus hojas Excel utilizando macros. ¡Comenzamos!

1. Insertar filas y columnas.

Muchas veces nos encontramos con la necesidad de insertar filas (o eliminarlas) en función de un valor o cálculo. Hoy vamos a ver los comandos para hacerlo de forma automática, y más adelante, cuando veamos los condicionales, los asociaremos a una condición.

Para insertar una sola fila en una posición determinada, por ejemplo, en la fila 2, usaremos:

Cells(2,1).EntireRow.Insert

Basta con apuntar a la fila 2, es decir, da igual el valor que le demos a la columna. Por tanto, con el comando

Cells(2,9).EntireRow.Insert

obtendríamos el mismo resultado.

Para insertar una sola columna en una posición determinada, por ejemplo, en la columna B, usaremos:

Cells(1,2).EntireColumn.Insert

Basta con apuntar a la columna B, es decir, da igual el valor que le demos a la fila. Por tanto, con el comando

Cells(9,2).EntireColumn.Insert

obtendríamos el mismo resultado.

Si lo que queremos es insertar un rango de filas o columnas utilizando macros, usaremos:

Range("A2:A4").EntireRow.Insert

Insertaría filas nuevas entre A2 y A4, es decir, 3 filas.

Mientras que,

Range("A2:D2").EntireColumn.Insert

insertaría columnas nuevas entre A2 y D2, es decir, 4 columnas.

2. Eliminar filas y columnas.

Para eliminar una sola fila de una posición determinada, por ejemplo, la fila 2, usaremos:

Cells(2,1).EntireRow.Delete

Basta con apuntar a la fila 2, como veíamos más arriba.

Para eliminar una sola columna de una posición determinada, por ejemplo, la columna B, usaremos:

Cells(2,1).EntireColumn.Delete

Basta con apuntar a la columna B, como veíamos más arriba.

Si lo que queremos es eliminar un rango de filas o columnas, usaremos:

Range("A2:A4").EntireRow.Delete

Elimina las filas 2, 3 y 4.

Range("A2:D2").EntireColumn.Delete

Elimina las columnas A, B, C y D.

Vas a ver, con este ejemplo, qué fácil es insertar y eliminar filas y columnas usando macros.

En primer lugar, crea un nuevo libro Excel, abre el editor VBA, inserta 5 módulos y copia las siguientes macros en ellos.

 

Macro 1. Insertar una fila.

Sub Leccion8_1()

'Macro que inserta una fila en la posición 5 y asigna el contenido "Malaga" a la celda A5

Cells(5, 1).EntireRow.Insert                      'Insertamos una fila nueva en la posición 5

Cells(5, 1).Value = "Malaga"                     'Asignamos el valor "Malaga" a la celda A5

Cells(2, 1).Copy                                        'Copiamos la celda A2 "Barcelona"

Range("A5").Select                                    'Seleccionamos la celda A5 "Malaga"

'Aplicamos el formato de A2 a A5

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False     

Application.CutCopyMode = False            'Desactivamos el comando copiar

End Sub

Macro 2. Insertar dos columnas.

Sub Leccion8_2()

'Macro que inserta 2 columnas entre B y C, y asigna el contenido "Cafeteria" a B1 y "Aeropuerto" a C1

Range("C1:D1").EntireColumn.Insert            'Insertamos 2 columnas entre C y D

Cells(1, "C").Value = "Cafeteria"                    'Asignamos el valor "Cafeteria" a la celda C1

Cells(1, "D").Value = "Aeropuerto"                 'Asignamos el valor Aeropuerto a la celda D1

Cells(1, 2).Copy                                            'Copiamos la celda B1 "Restaurante"

Range("C1:D1").Select                                  'Seleccionamos las celdas C1 "Cafeteria" y D1 "Aeropuerto"

'Aplicamos el formato de B1 a C1 Y D1

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False     

Application.CutCopyMode = False                'Desactivamos el comando copiar

End Sub

Macro 3. Eliminar una columna.

Sub Leccion8_3()

'Macro que elimina la columna B

Cells(1, 2).EntireColumn.Delete                     'Eliminamos la columna B

End Sub

Macro 4. Eliminar dos filas.

Sub Leccion8_4()

'Macro que elimina las filas 3 y 4

Range("A3:A4").EntireRow.Delete                    'Borramos las filas 3 y 4

End Sub

Macro 5. Restaurar la configuración inicial de la página.

Sub Leccion8_5()

'Macro que restaura la configuración inicial de la página

Application.ScreenUpdating = False                         'Desactivamos el refresco de pantalla

Range("A1:AA100").ClearContents                             'Borramos el contenido de las celdas del rango A1-AA100

Cells(2, "A").Value = "Barcelona"                                 'Asignamos a la celda A2 el valor "Barcelona"

Cells(3, "A").Value = "Madrid"                                      'Asignamos a la celda A3 el valor "Madrid"

Cells(4, "A").Value = "Sevilla"                                      'Asignamos a la celda A4 el valor "Sevilla"

Cells(5, "A").Value = "Bilbao"                                       'Asignamos a la celda A5 el valor "Bilbao"

Cells(6, "A").Value = "Valencia"                                   'Asignamos a la celda A6 el valor "Valencia"

Range("A2:A6").Font.ColorIndex = 3                           'Asignamos color rojo al texto del rango A2-A6

Range("A2:A6").HorizontalAlignment = xlCenter        'Alineamos horizontalmente el texto del rango A2-A6

Cells(1, "B").Value = "Restaurante"                             'Asignamos a la celda B1 el valor "Restaurante"

Cells(1, "C").Value = "Museo"                                      'Asignamos a la celda C1 el valor "Museo"

Cells(1, "D").Value = "Salon Congresos"                      'Asignamos a la celda D1 el valor "Salon Congresos"

Cells(1, "E").Value = "Hotel"                                        'Asignamos a la celda E1 el valor "Hotel"

Cells(1, "F").Value = "Parque"                                     'Asignamos a la celda F1 el valor "Parque"

Range("B1:F1").Font.ColorIndex = 10                         'Asignamos color verde al texto del rango B1-F1

Range("B1:F1").HorizontalAlignment = xlCenter        'Alineamos horizontalmente el texto del rango B1-F1

Range("B2:B5").Value = "X"                                         'Asignamos al rango de celdas B2-B5 el valor "X"

Range("C3:C4").Value = "X"                                         'Asignamos al rango de celdas C3-C4 el valor "X"

Cells(6, 3).Value = "X"                                                'Asignamos a la celda C6 el valor "X"

Range("D2:F2").Value = "X"                                         'Asignamos al rango de celdas D2-F2 el valor "X"

Cells(3, "F").Value = "X"                                              'Asignamos a la celda F3 el valor "X"

Range("D5:E5").Value = "X"                                        'Asignamos al rango de celdas D5-E5 el valor "X"

Cells(6, "F").Value = "X"                                              'Asignamos a la celda F6 el valor "X"

Range("B2:F6").HorizontalAlignment = xlCenter       'Alineamos horizontalmente el texto del rango B2-F6

Application.ScreenUpdating = True                          'Activamos el refresco de pantalla

End Sub

Seguidamente, rellena la hoja con los valores que se muestran a continuación y crea cinco botones asociados a las cinco macros que acabamos de copiar. Debería quedarte algo así:

total-operaciones-matematicas-macros

Al ejecutar la primera macro, vemos como se añade una nueva fila en la posición 5, y se le asigna el valor “Malaga” a la celda A5. Si te fijas en el código, también restablecemos el formato de celda, copiándolo de otra.

total-operaciones-matematicas-macros

Con la segunda macro, se añaden automáticamente dos nuevas columnas en las posiciones C y D, y se le asigna a la celda C1 el valor “Cafetería” y a la celda D1 el valor “Aeropuerto”. También aquí restablecemos el formato de la celda, copiándolo de otra.

total-operaciones-matematicas-macros

La tercera macro elimina la columna B.

total-operaciones-matematicas-macros

La cuarta macro elimina las filas 3 y 4.

total-operaciones-matematicas-macros

Con la quinta macro restablecemos la hoja con los valores iniciales.

En esta macro he utilizado dos formas diferentes de asignar valores a celdas, y también he aprovechado para refrescar lo aprendido en la Lección 7 sobre cómo automatizar los cambios de atributos de formato en celdas.

Con esto llegamos al final de la octava lección, en la que has aprendido a insertar y eliminar filas y columnas usando macros.

Espero que te esté gustando el curso. Si quieres, puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario, soy todo oídos.

Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.

Nos vemos en el próximo capítulo.

Si te ha servido y quieres donar

Descarga el archivo del ejemplo

10 Comentarios

  1. Avatar

    En excel si tengo en B10 la formula =A1*B2 y posteriormente añado una fila antes de la fila 1, Excel automáticamente corrige la fórmula poniendo =A2*B3. ¿Hay alguna forma para que una macro que yo he hecho también cambie las formulas si se añade alguna fila o columna y no tenga yo que cambiar las posiciones en todas las macros afectadas?

    Responder
    • Avatar

      Hola Javier,

      Lo único que se me ocurre es que referencies las fórmulas a variables, y no a celdas. No sé que hoja de cálculo tienes montada, si subes un ejemplo podemos verlo.

      Saludos.

      Responder
  2. Avatar

    Hola, estoy siguiendo su curso uno por uno... gracias muy bueno la vdd

    En algun modulo se enseñará a correr un macro partiendo de una celda activa?

    Tengo hojas de datos en donde por columna necesito calcular valores estadisticos

    Gracias

    Responder
  3. Avatar

    Buen día!
    Espero que se encuentre bien y todavía esté atendiendo consultas.
    Mi problema es este:
    Lleno diariamente datos en una tabla. Tengo una macro que me hace buena parte del llenado, pero lo que no consigo es que la macro inserte una fila al final de la tabla; siempre las inserta sobre la última fila con información y me descuadra la tabla.

    Le ruego que me ayude.
    Muchas gracias de antemano!

    Responder
    • Avatar

      Buenos días Gonzalo!

      Si quieres, puedes abrir un hilo en el foro y subir tu archivo para revisarlo y poder ayudarte.

      Saludos!

      Responder
  4. Avatar

    Hola, me podría ayudar
    Necesito un código que me permita ingresar un determinado número de filas en una tabla de datos desde una celda especifica (esta celda contiene el numero de filas que necesito). El lugar de ingreso de las filas siempre es el mismo (al inicio de la base de datos)

    Responder
    • Avatar

      Hola Patricia,

      ¡Muy fácil! Te dejo el código a continuación.

      Sub Insertar()

      'Guardamos en la variable a el número de filas a insertar

      a = Cells(2, "B")

      'Añadimos a partir de la fila 5, a columnas

      Range(Cells(5, 1), Cells(5 + a, 1)).EntireRow.Insert

      End Sub

      Insertar-filas

      Insertar-filas

      Si necesitas más ayuda, abre un hilo en el foro y subo un ejemplo.

      Saludos.

      Responder
  5. Avatar

    buenas tardes me puedes orientar
    requiero que al leer determinada columna si encuentra el valor 2 agregue una fila hacia abajo si entra el valor 3 agregue 2 filas hacia abajo si encuentra el valor 4 agregue 3 filas hacia abajo

    Responder
    • Avatar

      Hola César,

      Prueba con el siguiente código...

      Sub Buscar()

      'Recorremos los datos buscando los números 2 y 3

      For i = 5 To 12

      'Si encontramos un 2, añadimos una fila

      If Cells(i, "C") = 2 Then

      Range(Cells(i + 1, "C"), Cells(i + 1, "C")).EntireRow.Insert

      End If

      'Si encontramos un 3, añadimos dos filas

      If Cells(i, "C") = 3 Then

      Range(Cells(i + 1, "C"), Cells(i + 2, "C")).EntireRow.Insert

      End If

      Next

      End Sub

      Añadir filas automáticamente

      Responder

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.

« L7. Automatizar el formato de una celda con macros.

L9. Combinar celdas con macros. »

Categorías

abril 2024
LMXJVSD
1234567
891011121314
15161718192021
22232425262728
2930 

Debates en el foro

Avatar
Formularios con ADO

Contacto