Seleccionar numero indeterminado de celdas

¿Existe alguna fórmula o alguna forma de indicar en una macro que me seleccione una celda más "x" hasta que no queden más?
buff, intento explicarme mejor... Necesito que me seleccione por ejemplo la celda "B2", "B10", "B18", "B26", "B34", etc... Hasta que llegue a por ejemplo "B90" y si la celda esta vacía pare. Siempre habrá la misma distancia de una celda a la siguiente, en este ejemplo "8". A continuación que esas celdas las copie en otra hoja.
Espero que me puedan ayudar. Gracias, y un saludo

1 Respuesta

Respuesta
1
Hay varios caminos, aquí te dejo uno. Como no hay casi referencias tendrás que ajustar las que aquí utilicé: la copia va en hoja2 a partir de la primer fila libre recorriendo col A
sub copiado()
filalibre = sheets(2).range("A65536").end(xlup).row+1  'busca la primer fila libre en destino
For i = 2 to 90 step 8
if activesheet.cells(i,2) <> "" then  'controla col B
activesheet.cells(i,2).copy destination:=sheets(2).cells(filalibre,1)
filalibre = filalibre+1
end if
next
end sub
Colocá la rutina en un módulo para probarlo.
Si todo se comprendió no olvides finalizar la consulta
Saludos
Elsa
http://es.geocities.com/lacibelesdepunilla/macros
Muchísimas gracias Elsa. Aprovecho un poco acerca de lo mismo. ¿Qué parámetros son los que debería cambiar si también quiero que haga lo mismo con la columna C y que lo pegue en la hoja dos en la columna B?
Ah, y otra cosa, pone 2 to 90, ¿seria bueno que pusiera en su lugar 65536 para que revisara todo?
¿Podría poner dos o más macros de este estilo una seguida de otra?
Muchas gracias, y disculpa tantas dudas.
Si serán las mismas filas tanto en B como en C, con los saltos de 8 en 8, podes ajustarla así:
sub copiado()
fila1 = sheets(2).range("A65536").end(xlup).row+1 'busca la primer fila libre en col A
fila2 = sheets(2).range("B65536").end(xlup).row+1 'busca la primer fila libre en col B
For i = 2 to 65536 step 8
if activesheet.cells(i,2) <> "" then 'controla col B
activesheet.cells(i,2).copy destination:=sheets(2).cells(fila1,1)
fila1= fila1+1
elseif activesheet.cells(i,3) <> "" then  'controla col C
activesheet.cells(i,3).copy destination:=sheets(2).cells(fila2,2)
fila2 = fila2+1
end if
next
end sub
Pero si cada rango tendrá sus propia fila de inicio y quizás saltos distintos deberás repetir la rutina original 2 veces.
sub copiado()
filalibre = sheets(2).range("A65536").end(xlup).row+1 'busca la primer fila libre en destino
For i = 2 to 65536 step 8
if activesheet.cells(i,2) <> "" then 'controla col B
activesheet.cells(i,2).copy destination:=sheets(2).cells(filalibre,1)
filalibre = filalibre+1
end if
next
'repetir para la col C
filalibre  =sheets(2).range("B65536").end(xlup).row+1
'siguen las lineas hasta el next , comparando por (i,3) y copiando en cells(filalibre,2)
end sub
Podes poner todas las macros que sean necesarias. En el último ejemplo puse la 2da a continuación de la primera, pero bien podrías tener 2 separadas, 1 por cada col.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas