Copiar rango dinámico con VBA en Excel

A ver si me pueden ayudar. Os adjunto una imagen para que sea más fácil comprender.

Quiero copiar la columna I, desde I10 a I122 (ahora mismo, en cuanto añada más libros, será otra fila distinta), en donde tengo un índice de los libros (que he hecho con la fórmula concatenar). Mi problema es que esa columna la tengo rellena hasta la fila 304. Y celdas con valores solo hay hasta la fila 122. Si selecciona los valores, me coge hasta la fila 304, y no hasta donde realmente tengo valores.

¿Cómo puedo hacer en VBA para que me seleccione solo las celdas de la columna I con valores? Si ya me decís cómo puedo hacer para que a medida que añado nuevos libros, me copie las fórmulas y el formato, de tal forma que no tengo que hacerlo manual cada vez que alcanzo la última fila, sería la leche.

Muchas gracias.

2 respuestas

Respuesta
1

Por lo general, yo uso una fórmula en alguna celda para tomar como referencia que en este caso sería:
H1=300-contar.blanco(I10:I309) 'Que si estarían todas las celdas vacías, me daría 0
Luego con la siguiente fórmula lo seleccionás (en el VBA):
Range(Cells(10,"I"), Cells(Range("H1")+9,"I")).Select

Y ahí haces lo que quieras con eso seleccionado.

Otra forma, es usar un For para contar cuántas columnas están ocupadas. Te paso dos formas, una que cuenta hasta que encuentra una celda vacía y termina el bucle, y otra que recorre todos los casilleros. Esto es porque tal vez tengas la situación de que tengas que borrar celdas intermedias.

Dim contador As Integer

contador = 0

For i 1 To 300

    If Cells(i+9,"I").Value = "" Then

        contador = i - 1

        i = 310

    End If

Next i

'El otro For

Dim contador As Integer

contador = 0

For i 1 To 300

    If Cells(i+9,"I").Value <> "" Then

        contador = contador + 1

    End If

Next i

Y una vez que tenes el valor en la variable "contador", la usas para la selección:

Range(Cells(10,"I"),Cells(9+contador,"I")).Select

Respuesta
1

Tal vez te aporte algo más estos ejemplos

Como determinar la última fila con datos

https://youtu.be/_XegDeHiORc

Como establecer un rango variable en forma automática

https://youtu.be/EHbOSap0EIQ

como copiar pegar

https://youtu.be/nPSFAZ8TvrQ

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas