** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Completar celdas hasta una fila determinada
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCompletar celdas hasta una fila determinada

 Responder Responder
Autor
Mensaje
cyberagente Ver desplegable
Nuevo
Nuevo


Unido: 20/Julio/2007
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Tema: Completar celdas hasta una fila determinada
    Enviado: 01/Diciembre/2008 a las 17:52

Tengo 5 columnas. 4 de ellas tienen datos hasta la columna 100 (variable) por ejemplo y otra está vacía (la E). Necesito rellenar esa columna desde E2 hasta E100 con la palabra "casa" por ejemplo. Para lo cual primero probé:

- 1 era idea (reemplazar campo vacío por casa)
Columns("E:E").Select  
Selection.Replace What:="", Replacement:="casa", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False

Problema: me detectaba que tenía vacío hasta la fila 65536 (la última de las últimas) en vez de la 100

- 2 idea (contar cuantas filas tiene mi hoja)
Range("A1").Select
numFilas = ActiveSheet.UsedRange.Rows.Count      ' me cuenta las filas de la columna A que está llena
UltimaFila = "E" & numFilas
For Each Fila In Range("E2:" & UltimaFila)   'Excepto la primera fila del encabezado
        Fila.FormulaR1C1 = "casa"
Next

Problema: me detectaba que tenía vacío hasta la fila 62135 en vez de la 100

- 3 idea (rellenar la columna E utilizando AutoFill)
numFilas = ActiveSheet.UsedRange.Rows.Count      'Me da el nº de filas
UltimaFila = "E" & numFilas
Selection.AutoFill Destination:=Range("E2:" & UltimaFila)

Problema: me da el error 1004. Fallo en el método AutoFill de la clase Range

- 4 idea (ya con ganas de darme por vencido)
Eliminar las filas desde la fila 101 hasta la 65536 y pasar a la primera idea, la de reemplazar el campo "" por "casa". Funciona.

Y yo me pregunto, ¿ por qué me hace esas cosas el Excel? ¿ Cómo puedo solucionar los errores y hacerlo de una manera sencilla?

Muchas gracias,
Arriba
jairga Ver desplegable
Habitual
Habitual


Unido: 15/Julio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 84
Enlace directo a este mensaje Enviado: 01/Diciembre/2008 a las 18:30
Primero creo que excel no es el problema, es la forma en que tu has planteado la solucion.
para la primera idea selecciones toda la columna, tu primer error, yo lo haria con un bucle que me recorra la colunma con datos anterior o en la que siempre tenga datos y me vaya poniendo en la celda de la columna E la palabra casa y salga del bucle cuendo en esa columna no la E no haya datos
 
para lo demas es sencillo solo debes investigar un poco mas y un poquito de logica y lo tendras!


Editado por jairga - 01/Diciembre/2008 a las 18:31
SALUDOS
Arriba
sailepaty Ver desplegable
Asiduo
Asiduo


Unido: 23/Junio/2006
Localización: Estados Unidos
Estado: Sin conexión
Puntos: 458
Enlace directo a este mensaje Enviado: 01/Diciembre/2008 a las 18:53
Prueba así,
 
Range("E2:E" & Cells(Rows.Count, "A").End(xlUp).Row) = "Casa"
 
Saludos
Arriba
cyberagente Ver desplegable
Nuevo
Nuevo


Unido: 20/Julio/2007
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 01/Diciembre/2008 a las 19:50
Jairga: lo que me comentas no puedo hacer porque en mi columna E nunca hay datos antes de que yo los ponga. Por eso tengo que fijarme en otra columna que sí que tiene datos.
Sailepaty: probaré tu respuesta.

Gracias,
Arriba
sdgm Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 21/Abril/2005
Localización: Guatemala
Estado: Sin conexión
Puntos: 906
Enlace directo a este mensaje Enviado: 01/Diciembre/2008 a las 20:54

Veamos por partes:

1era idea:
Cuando ejecutas el comando Columns("E:E").select, estas seleccionando las 65536 celdas de la columna E, aún cuando no se hayan utilizado nunca.  Por eso te rellena toda la columna.

Descártala.


2da y 3ra idea:
Cuando utilizas el método UsedRange, estás pidiendo el rango "usado", y si con la prueba 1 ya seleccionaste (y colocaste la palabra "casa") en las 65536 filas de la columna E, aún cuando las borres, Excel las identificará como usadas.  El resultado será impredecible, porque en otra oportunidad el rango "usado" podría variar según lo que hayas hecho en la sesión de trabajo.

También descártalas.

 


La propuesta que te hace Sailepaty es la más adecuada.  Prueba, y comentas para ver si te podemos ayudar un poco más...

 
Saludos.


Editado por sdgm - 01/Diciembre/2008 a las 22:25
Cordialmente, David
Arriba
sailepaty Ver desplegable
Asiduo
Asiduo


Unido: 23/Junio/2006
Localización: Estados Unidos
Estado: Sin conexión
Puntos: 458
Enlace directo a este mensaje Enviado: 01/Diciembre/2008 a las 21:12
Hola David,
 
Solo para clarificar a futuros consultantes, tu sugerencia y la mia son exactamente igual.
 
Range("E2:E" & Cells(Rows.Count, "A").End(xlUp).Row).Value = "Casa"
 
En Excel 2003 es igual a:
Range("E2:E" & Cells(65536, "A").End(xlUp).Row).Value = "Casa"
 
En Excel 2007 si el archivo esta salvado con las nuevas extenciones es igual a:
Range("E2:E" & Cells(1048576, "A").End(xlUp).Row).Value = "Casa"
 
Saludos
 
 
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5636
Enlace directo a este mensaje Enviado: 01/Diciembre/2008 a las 21:36

¿Tiene que ser con código?

Si entras casa en la primera celda de E en que quieres que aparezca, y haces doble clic en el punto de relleno de dicha celda, se replicará casa en toda la columna E hasta que encuentre una celda de D que esté vacia.

Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
sdgm Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 21/Abril/2005
Localización: Guatemala
Estado: Sin conexión
Puntos: 906
Enlace directo a este mensaje Enviado: 01/Diciembre/2008 a las 22:25

Tienes toda la razón, Sailepaty.  Te pido disculpas, y edito mi  mensaje anterior para evitar confusiones.

Embarrassed
Cordialmente, David
Arriba
jairga Ver desplegable
Habitual
Habitual


Unido: 15/Julio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 84
Enlace directo a este mensaje Enviado: 01/Diciembre/2008 a las 23:10
Hola ciberagente lo que te digo, es que la validacion no la vas a hacer con la columna E, si no con la columna que continen datos ejemplo la A. la solucion de saile es sencilla y eficaz. pero ojo si en la colunma A tuvieras un valor en blanco entre la primera celda y la ultima tambien te pondria en esa fila columna E la palabra casa. por eso te decia recorrer la columna A si hay varlor en la celda ponga en la fila de la columna E "casa" si no "".

Editado por jairga - 01/Diciembre/2008 a las 23:20
SALUDOS
Arriba
cyberagente Ver desplegable
Nuevo
Nuevo


Unido: 20/Julio/2007
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 02/Diciembre/2008 a las 17:21
Antes de nada agradeceros a todos vuestras respuestas.
Sailepaty: la solución que me has dado funcina perfectamente.
AnSanVal: lo hago por código.
Jairga: recorrer la columna A y si tiene datos escribir "casa" en la E, es perfectamente válida.

Al final lo dejaré tal y como Sialepaty me ha dicho ya que es la forma más sencilla de hacerla.

Gracias a todos de nuevo, un saludo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable