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

#1 Héctor Miguel
04/07/2007 - 00:13 | Informe spam
hola, tonya !

... una macro... que tiene una formula evalua... una celda y devuelve un valor numerico
... son varias celdas de una misma columna... una vez que tengo la formula es arrastrarla hasta... todas las celdas de dicha columna...
... mi problema es que quiero que esto tambien lo realice la macro... puesto que el numero de celdas varia...
... como puedo poner en la macro que... se arrastre... hasta el ultimo valor de esa misma columna ...



[probablemente] habria varias opciones: autofill, copy, offset, resize, end(xlup/xldown), etc. [segun *la formula*] :))

puedes exponer la macro ? [o al menos la formula ?]
puedes comentar *como* se haria la determinacion de *la ultima celda* donde se debe arrastrar la formula ?
[segun la ultima celda de una, dos, tres, ... columnas anteriores/posteriores a la celda donde se pone la formula ?]

saludos,
hector.
Respuesta Responder a este mensaje
#2 Tony
06/07/2007 - 09:04 | Informe spam
Hola Hector:

Te pongo el código de la macro:

Sub Dejareclaperi()
'
' Dejareclaperi Macro
' Deja reclamaciones de peritos para importar
'
' Acceso directo: Ctrl+Mayús+P
'
Rows("1:7").Select
Selection.Delete Shift:=xlUp
Columns("A:A").Select
Selection.NumberFormat = "@"
Columns("D:D").Select
Selection.NumberFormat = "0"
Range("A1").Select
ActiveCell.FormulaR1C1 = "Cod"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Act"
Range("C1").Select
ActiveCell.FormulaR1C1 = "Iris"
Range("D1").Select
ActiveCell.FormulaR1C1 = "Nis"
Range("E1").Select
ActiveCell.FormulaR1C1 = "Tipo"
Range("H2").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-7],""0000"")"
Range("I2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-4]="""",0,(IF(RC[-4]=""demora"",1,(IF(RC[-4]=""retraso
indemnizacion"",2,(IF(RC[-4]=""mala reparacion"",3,(IF(RC[-4]=""mal
servicio"",4,(IF(RC[-4]=""consulta o informacion"",5,(IF(RC[-4]=""demora
agencia"",6,7)))))))))))))"
End Sub

La última celda donde se debe arrastrar es la que coincide con las columnas
de la izquierda (anteriores) que contienen datos.

Gracias por todo.
Respuesta Responder a este mensaje
#3 Tony
09/07/2007 - 20:18 | Informe spam
Hector, ¿podrías decirme algo? Es que me corre un poquito de prisa...

Gracias por anticipado.

"Tony" wrote:

Hola Hector:

Te pongo el código de la macro:

Sub Dejareclaperi()
'
' Dejareclaperi Macro
' Deja reclamaciones de peritos para importar
'
' Acceso directo: Ctrl+Mayús+P
'
Rows("1:7").Select
Selection.Delete Shift:=xlUp
Columns("A:A").Select
Selection.NumberFormat = "@"
Columns("D:D").Select
Selection.NumberFormat = "0"
Range("A1").Select
ActiveCell.FormulaR1C1 = "Cod"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Act"
Range("C1").Select
ActiveCell.FormulaR1C1 = "Iris"
Range("D1").Select
ActiveCell.FormulaR1C1 = "Nis"
Range("E1").Select
ActiveCell.FormulaR1C1 = "Tipo"
Range("H2").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-7],""0000"")"
Range("I2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-4]="""",0,(IF(RC[-4]=""demora"",1,(IF(RC[-4]=""retraso
indemnizacion"",2,(IF(RC[-4]=""mala reparacion"",3,(IF(RC[-4]=""mal
servicio"",4,(IF(RC[-4]=""consulta o informacion"",5,(IF(RC[-4]=""demora
agencia"",6,7)))))))))))))"
End Sub

La última celda donde se debe arrastrar es la que coincide con las columnas
de la izquierda (anteriores) que contienen datos.

Gracias por todo.
Respuesta Responder a este mensaje
#4 Héctor Miguel
09/07/2007 - 21:16 | Informe spam
hola, Tony !

Hector, podrias decirme algo? Es que me corre un poquito de prisa...



[perdon... -creo que- se me durmio el gallo] :D

prueba con algo +/- como lo siguiente y...
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

__ el codigo expuesto __
Te pongo el codigo de la macro:

Sub Dejareclaperi()
'
' Dejareclaperi Macro
' Deja reclamaciones de peritos para importar
'
' Acceso directo: Ctrl+Mayus+P
'
Rows("1:7").Select
Selection.Delete Shift:=xlUp
Columns("A:A").Select
Selection.NumberFormat = "@"
Columns("D:D").Select
Selection.NumberFormat = "0"
Range("A1").Select
ActiveCell.FormulaR1C1 = "Cod"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Act"
Range("C1").Select
ActiveCell.FormulaR1C1 = "Iris"
Range("D1").Select
ActiveCell.FormulaR1C1 = "Nis"
Range("E1").Select
ActiveCell.FormulaR1C1 = "Tipo"
Range("H2").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-7],""0000"")"
Range("I2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-4]="""",0,(IF(RC[-4]=""demora"",1,(IF(RC[-4]=""retraso
indemnizacion"",2,(IF(RC[-4]=""mala reparacion"",3,(IF(RC[-4]=""mal
servicio"",4,(IF(RC[-4]=""consulta o informacion"",5,(IF(RC[-4]=""demora
agencia"",6,7)))))))))))))"
End Sub

La ultima celda donde se debe arrastrar es la que coincide con las columnas
de la izquierda (anteriores) que contienen datos.
Respuesta Responder a este mensaje
#5 Tony
10/07/2007 - 19:12 | Informe spam
Hola Hector:

He probado el código que me has puesto y al ejecutar la macro se para justo
después del With Range ("h2:i2") y me da error que dice más o menos como que
no es un argumento correcto...

¿Puedes decirme qué ocurre?...

Gracias de nuevo

"Héctor Miguel" wrote:

hola, Tony !

> Hector, podrias decirme algo? Es que me corre un poquito de prisa...

[perdon... -creo que- se me durmio el gallo] :D

prueba con algo +/- como lo siguiente y...
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

__ el codigo expuesto __
>> Te pongo el codigo de la macro:
>>
>> Sub Dejareclaperi()
>> '
>> ' Dejareclaperi Macro
>> ' Deja reclamaciones de peritos para importar
>> '
>> ' Acceso directo: Ctrl+Mayus+P
>> '
>> Rows("1:7").Select
>> Selection.Delete Shift:=xlUp
>> Columns("A:A").Select
>> Selection.NumberFormat = "@"
>> Columns("D:D").Select
>> Selection.NumberFormat = "0"
>> Range("A1").Select
>> ActiveCell.FormulaR1C1 = "Cod"
>> Range("B1").Select
>> ActiveCell.FormulaR1C1 = "Act"
>> Range("C1").Select
>> ActiveCell.FormulaR1C1 = "Iris"
>> Range("D1").Select
>> ActiveCell.FormulaR1C1 = "Nis"
>> Range("E1").Select
>> ActiveCell.FormulaR1C1 = "Tipo"
>> Range("H2").Select
>> ActiveCell.FormulaR1C1 = "=TEXT(RC[-7],""0000"")"
>> Range("I2").Select
>> ActiveCell.FormulaR1C1 = _
>> "=IF(RC[-4]="""",0,(IF(RC[-4]=""demora"",1,(IF(RC[-4]=""retraso
>> indemnizacion"",2,(IF(RC[-4]=""mala reparacion"",3,(IF(RC[-4]=""mal
>> servicio"",4,(IF(RC[-4]=""consulta o informacion"",5,(IF(RC[-4]=""demora
>> agencia"",6,7)))))))))))))"
>> End Sub
>>
>> La ultima celda donde se debe arrastrar es la que coincide con las columnas
>> de la izquierda (anteriores) que contienen datos.



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida