¿Fórmula o Código para que Excel actué hasta donde hay datos?

La pregunta la hago porque en mi trabajo creo macros para ahorrar tiempo, ya que casi siempre me toca hacer lo mismo con bases de datos.

Sin embargo, cuando las creo, me veo en aprietos para instruirle a excel que copie o actúe hasta donde haya datos, por lo general de forma vertical.

Ej: tengo una base de datos por 48 registros. Listo hago mi macro y todo. Pero si me llega esa misma base de datos que tiene la misma estructura pero esta vez llega por 64 registros... Como mi macro está hasta 48 entonces me borra los registros restantes.. ¿ven? ... Por eso cuando creo las macros me toca cambiar el valor para que actúe hasta la celda 100 o 200 de por columna, eso para que coja todos los datos que lleguen en próximas bases..

El código de una macro que tengo y que concatena teléfonos es esta:

ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],""/"",RC[-1])"
Range("I2").Select
Selection.Copy
Range("H2").Select
Selection.End(xlDown).Select
Range("I500").Select ---(en este punto es donde me toca bajar por lo menos hasta el registro 500 porque esas bases no exceden esa cantidad de registros.)

en este punto.. Estoy seguro que podria funcionar algun codigo pero.. Desconozco!

Range(Selection, Selection.End(xlUp)).Select
Range("I3:I500").Select
Range("I500").Activate
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.End(xlUp).Select
Selection.End(xlUp).Select
Range("I1").Select
ActiveCell.FormulaR1C1 = "TEL"
Columns("I:I").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("I1").Select
Application.CutCopyMode = False
Columns("G:G").Select

2 respuestas

Respuesta
1

Me puedes decir qué es lo que quieres que haga la macro, explícame pasos a paso para crearte una nueva macro.

Hola, ¿como te explico? lo que quiero que pase en excel, es que trabaje con la información que hay en la hoja de calculo. es decir.. si hay 200 registros que trabaje con esos, si hay 1000 con esos...  eso es lo especifico, como te digo.. hago macros para cada cliente... porque trabajo procesando bases de muchos clientes.

necesito que excel como que.. valide hasta donde hay datos... y que actué hasta allí.. me hago entender? .. como el ejemplo que hacia de concatenar el telefono alla arriba.. es como si uno le diese doble click en la cruz negra que aparece cuando uno pone el ratón en la esquina inferior derecha de una celda.

Lo que entiendo que hace tu macro es concatenar la celda de la columna "G" y la celda de la columna "H" y el resultado lo pone en la columna "I".

Eso es lo que hace, ¿correcto?

Cambiar tu macro por esta:

Sub datos()
'Por.Dante Amor
    u = Range("H" & Rows.Count).End(xlUp).Row
    [I1] = "TEL"
    [I2] = "=RC[-2]&""/""&RC[-1]"
    [I2].AutoFill Destination:=Range("I2:I" & u)
    Range("I2:I" & u) = Range("I2:I" & u).Value
End Sub

Otra opción es con un ciclo

Sub datos2()
'Por.Dante Amor
    [I1] = "TEL"
    For i = 2 To Range("H" & Rows.Count).End(xlUp).Row
        Cells(i, "I") = Cells(i, "G") & "/" & Cells(i, "H")
    Next
End Sub

Utiliza cualquiera de las opciones.

Respuesta

Me parece que lo que necesitas es alguna instrucción para ubicar tu fin de rango.

Hay varios modos, el más común es ubicar la ultima celda con datos desde abajo hacia arriba para ello se evalúa la col que ya tiene datos.

Por ej, si la col A llega hasta la fila 64 y necesitas rellenar la col I hasta esa fila harás lo siguiente:

Filx= Range("A" & Rows.Count).End(xlup).Row 

Range("I2").Copy

Range("I3:I" & Filx).Select
ActiveSheet. Paste

Tu ejemplo tiene muchas más líneas que no se comprenden bien, pero la idea de lo que necesitas esta en estas 4 líneas.

Sdos. Si esto resuelve tu consulta no olvides valorarla, sino solicita aclaraciones.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas