Hace poco un usuario habitual me planteó la forma de intercalar filas en un rango, alternando fila de datos con fila vacía. La cuestión planteada fué:
Como no existe una forma sencilla de realizar esta acción, y manualmente llevaría un tiempo precioso, sólo nos queda construir una macro que haga el trabajo por nosotros.
Nuestra macro será bastante sencilla, solo hay que recalcar que haremos un recorrido por las filas del rango en sentido inverso al habitual, esto es, empezaremos de abajo a arriba (de la última fila a la primera), usando el método Insert.
Este orden concreto nos asegura que insertar nuevas filas no afecte a los siguientes insertados... lo que ocurriría si empezaramos de las filas superiores a las inferiores.
Dentro del Explorador de proyectos del Editor de VBA, insertaremos en un Módulo el siguiente código de nuestra macro de Excel:
Podemos ver en la imagen su funcionamiento tras presionar el botón al que hemos asignado nuestra macro 'intercalado':
...¿Como puede insertar una fila en blanco en un rango de filas?, me explico, tengo 20 filas y quiero, una con datos otra en blanco, una con datos otra en blanco y asi sucesivamente... |
Como no existe una forma sencilla de realizar esta acción, y manualmente llevaría un tiempo precioso, sólo nos queda construir una macro que haga el trabajo por nosotros.
Nuestra macro será bastante sencilla, solo hay que recalcar que haremos un recorrido por las filas del rango en sentido inverso al habitual, esto es, empezaremos de abajo a arriba (de la última fila a la primera), usando el método Insert.
Este orden concreto nos asegura que insertar nuevas filas no afecte a los siguientes insertados... lo que ocurriría si empezaramos de las filas superiores a las inferiores.
Dentro del Explorador de proyectos del Editor de VBA, insertaremos en un Módulo el siguiente código de nuestra macro de Excel:
Sub intercalado() Set Rng = Range("A1:A10") 'controlamos la primera y última fila 'donde se encuentra el rango a intercalar rng1 = Rng.Item(1).Row rng10 = Rng.Item(Rng.Count).Row 'inhabilitamos la actualización o refresco de pantalla Application.ScreenUpdating = False 'recorremos en orden inverso las filas del rango For i = rng10 To rng1 + 1 Step -1 'insertando filas y desplazándolas hacia abajo 'como pretendíamos Rng.Item(i).Insert Shift:=xlDown Next i 'reactivamos el refresco de pantalla Application.ScreenUpdating = True End Sub
Podemos ver en la imagen su funcionamiento tras presionar el botón al que hemos asignado nuestra macro 'intercalado':
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.