seleccionar celdas en macro

03/07/2007 - 21:20 por tonya | Informe spam
Hola a todos:

Tengo una macro en Excel que tiene una fórmula. Esta fórmula evalúa el texto
que tiene introducida una celda y devuelve un valor numérico. Como no es una
única celda sino que son varias celdas de una misma columna, lo que hago una
vez que tengo la fórmula es arrastrarla hasta abajo para que devuelva el
valor de todas las celdas de dicha columna...

Pero mi problema es que quiero que esto también lo realice la macro, es
decir que la fórmula se copie en todas las celdas de debajo de la fórmula que
puse... Esto lo he conseguido hacer a medias, porque cuando ejecuto la macro
el "arrastre" hay veces que se queda corto y otras veces baja demasiado,
puesto que el número de celdas varía...

Mi pregunta es, ¿cómo puedo poner en la macro que una fórmula se arrastre
desde el primer valor de una celda hasta el último valor de esa misma columna
donde está la celda cumplimentada?...

Espero haberme explicado bien...

Gracias por anticipado. Un saludo.

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
10/07/2007 - 22:20 | Informe spam
hola, Tony !

He probado el codigo que me has puesto y al ejecutar la macro se para justo despues del With Range ("h2:i2")
y me da error que dice mas o menos como que no es un argumento correcto...
Puedes decirme que ocurre?...



de acuerdo con el comentario donde indicas como se obtiene la ultima fila hasta donde se requiere copiar las formulas:
"La ultima celda donde se debe arrastrar es la que coincide con las columnas de la izquierda (anteriores) que contienen datos"



1) supuse que una columna *segura* para determinar la ultima fila con datos podria ser la columna 'A'...
puesto que es una de las que *formulas* en la macro donde dice: -> Range("h2").Formula = "=text(a2,""0000"")"

2) es la que estoy usando como *base* para hacer el auto-relleno en la parte de la macro despues del With con la instruccion:
-> .AutoFill .Resize(Range("a65536").End(xlUp).Row - 1), xlFillDefault

3) si este supuesto no es siempre el mejor -?-, prueba buscando otra columna *base* para determinar la ultima fila -?-

por lo demas, si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Sub Dejareclaperi()
' Acceso directo: Ctrl+Mayus+P
Rows("1:7").Delete
Columns("a:a").NumberFormat = "@"
Columns("d:d").NumberFormat = "0"
Range("a1:e1") = Array("Cod", "Act", "Iris", "Nis", "Tipo")
Range("h2").Formula = "=text(a2,""0000"")"
Range("i2").Formula = "=if(e2="""",0,(if(e2=""demora"",1,(if(e2=""retraso indemnizacion"",2,(if(e2=""mala reparacion"",3,(if(e2=""mal servicio"",4,(if(e2=""consulta o informacion"",5,(if(e2=""demora agencia"",6,7)))))))))))))"
With Range("h2:i2")
.AutoFill .Resize(Range("a65536").End(xlUp).Row - 1), xlFillDefault
End With
End Sub
Respuesta Responder a este mensaje
#7 Tony
11/07/2007 - 20:42 | Informe spam
Hola Hector:

¡¡Eres un crack!! Todo se ha ejecutado a la perfección... Lo que pasaba
es que había algo en el código que confundí al copiarlo...

Ahora abusando de tu confianza te voy a pedir una "cosita" más para esta
misma macro...

En las columnas B y C debo poner un 0 y un 3, respectivamente, en todas las
celdas que contengan datos. Es decir, quiero hacer hago similar a lo que me
dijiste con lo de la fórmula sólo que esta vez son valores fijos, pero
también hasta donde llegue la fila cumplimentada...

¿Qué código debería añadir a esta macro para que me hiciera esto que te
comento?...

¡¡Muchas gracias por anticipado!!...
Respuesta Responder a este mensaje
#8 Héctor Miguel
12/07/2007 - 09:46 | Informe spam
hola, Tony !

En las columnas B y C debo poner un 0 y un 3, respectivamente, en todas las celdas que contengan datos.
Es decir, quiero hacer hago similar a lo que me dijiste con lo de la formula solo que esta vez son valores fijos
pero tambien hasta donde llegue la fila cumplimentada...
Que codigo deberia a#adir a esta macro para que me hiciera esto que te comento?...



[primero]: comentar que se entiente [+/- exactamente] por: "en todas las celdas que contengan datos"

[segundo]: confirmar/corregir/... si lo anterior significa que existen celdas/filas *vacias* en el rango de tus datos -?-

[tercero]: comentar [si hubiera] algun detalle *en el tintero* -?-

saludos,
hector.
Respuesta Responder a este mensaje
#9 Tony
12/07/2007 - 21:42 | Informe spam
Hector, el número "0" y el número "3" se deben de copiar en las columnas B y
C, respectivamente... El número de filas o de la última celda donde se deben
de copiar el 0 y el 3 se determina al igual que ocurría con la fórmula, por
ejemplo tomando como base la columna A... Y en el rango sí que pueden existir
celdas en blanco y celdas con otro texto, pero el 0 y el 3 deben "machacar"
esa información...

Creo que no se me olvida ningún detalle más...

Gracias de nuevo...
Respuesta Responder a este mensaje
#10 Héctor Miguel
12/07/2007 - 22:05 | Informe spam
hola, Tony !

... "0" y... "3" se deben de copiar en las columnas B y C, respectivamente
... El numero de filas... donde se deben de copiar... al igual que... con la formula
... en el rango si que pueden existir celdas en blanco y celdas con otro texto
... el 0 y el 3 deben "machacar" esa informacion...



cambia el bloque with ... end with a lo sigiente:

With Range("h2:i2")
.AutoFill .Resize(Range("a65536").End(xlUp).Row - 1), xlFillDefault
.Offset(, -6).Resize(Range("a65536").End(xlUp).Row - 1) = Array(0, 3)
End With

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida