Buenas tardes, esperando que estés pasando un excelente fin de semana.
como puedo hacer una macro que me seleccione un numero de celdas de acuerdo al resultado de la siguiente linea
Range(Selection, Selection.End(xlDown)).Select
Dependiendo del numero de celdas encontradas eses el mismo numero de celdas que debe seleccionar hacia abajo-
Como en este ejemplo
Encuentra tres celdas con datos en el rango i1 , despues se recorre seis celdas hacia la izquierda entonces donde quedo debe seleccionar 3 celdas hacia abajo
Range("I1").Select
'selecciona la primer celda con datos
Selection.End(xlDown).Select
'Selecciona todas las celdas con datos hacia abajo
Range(Selection, Selection.End(xlDown)).Select
'se recorre seis celdas a la izquierda
ActiveCell.Offset(0, -6).Select
De antemano agradezco la ayuda
Saludos
Dom, 20/01/2013 - 04:28
#1
Seleccionar celdas con el resultado de la seleccion de otras
Hola wil
estás dando varios pasos, pero puedes agruparlos.
Primero seleccionas un rango con Range(Selection, Selection.End(xlDown)).Select
pero luego haces el offset con la celda activa
¿por qué no hacer directamente el Offset de todo el rango?, no hace falta seleccionarlo antes.
prueba con esto:
Range(Selection, Selection.End(xlDown)).Offset(0, -6).Select
------
Ya sé Excel, pero necesito más.
Hola Paco gracias por responder
Si se reduce mi macro y obtengo el resultado que necesito, no sabia que se podia agrupar en una linea
Antes de cerrar mi pregunta puedes echarle un ojo a mi macro para saber si tengo mas errores??
En si lo que hace es ir a la columna I busca la primera celda con datos de ahi selecciona todas las celdas con datos y se recorre tras celdas a la izquierda, copia el contenido y se va a la columna A, nuevamente busca la ultima celda vacia y ahi pega la informacion al final elimina las columnas donde estaban los datos.
Sub macris_buena()
Range("I1").Select
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlDown)).Offset(0, -3).Select
'En esta parte puedo hacer que se seleccionen las cuatro celdas a la vez??
Selection.Copy
Range("A1").Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
'Range("L:L,M:M,N:N,O:O,P:P").Select
'Selection.Delete Shift:=xlToLeft
'Range("A1").Select
'Range("A1") = WorksheetFunction.CountA(Range(Selection, Selection.End(xlDown)))
End Sub
te adjunto el ejemplo
De antemano te agradezco.
Saludos
Wil
Bueno, la parte de tomar los datos de la columna I y pegarlos en la columna A lo hace bien.
lo de eliminar las celdas con datos que está comentado... entiendo que quieres eliminar desde la columna F hasta la I
si son las columnas enteras, prueba con
Range("F:I").Delete
------
Ya sé Excel, pero necesito más.
no veo como finalizar la pregunta
De antemano te agradezco la ayuda +
Saludos
Wil