Macro completar fórmula hasta donde hayan datos

He practicado bastante VBA y de a poco puedo ir haciendo mis propias macros. Lo que requiero en esta oportunidad es que en el siguiente cogido, el cual crea una fórmula y la arrastra hasta la fila 94, la arrastre hasta donde hayan datos, ya que a ese archivo siempre le aumentarán la cantidad de datos, yo creé la macro esta mañana e iba en 94 filas, esta tarde fui a utilizarla y ya llevo 103 filas, y des afortunadamente la macro solo arrastra hasta la fila 94, como es evidente al final del código.

Estuve investigando un poco y creo que con este código "End(xlUp).Row" se puede hacer algo, pero la verdad no estoy muy seguro como.

ActiveCell.FormulaR1C1 = "MRC / OTC"
Range("AJ2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-7]>0,""Otc"",""Mrc"")"
Range("AJ2").Select
Selection.AutoFill Destination:=Range("AJ2:AJ94")

Respuesta
1

Debes buscar la última celda con datos según la columna que esté completa. Imaginemos que sea col A:

filx = range("A" & rows.count).end(xlup).row

Selection.AutoFill Destination:=Range("AJ2:AJ" & filx)

PD) Te invito a leer la sección Macros de mi sitio .

Esta respuesta, como algunas otras, resuelve tu consulta. No olvides valorarla (Excelente o buena) para darla por cerrada.

Sdos!

¡Gracias!  Súper bien.

Esta es la respuesta.

filx = range("A" & rows.count).end(xlup).row

Selection.AutoFill Destination:=Range("AJ2:AJ" & filx)

Aunque le hice un ligero cambio, ya que ahora formulé 3 columnas (de la AJ a la AL) y quedó así.

filx = Range("A" & Rows.Count).End(xlUp).Row
Selection.AutoFill Destination:=Range("AJ2:AL" & filx)

Posdata; si alguien más necesita esta respuesta, lo que está en negrita y cursiva es lo que toca ADICIONARLE a la formula, yo inicialmente no entendí bien, pero ya. 

3 respuestas más de otros expertos

Respuesta
1

Prueba con esta macro, es para rangos dinámicos, cuenta las filas en ac2 y en base a ese conteo es la cantidad de fórmulas que coloca en aj2

Sub formulacion()
ActiveCell.FormulaR1C1 = "MRC / OTC"
Set datos = Range("ac2").CurrentRegion
With datos
    Set Formula = Range("aj2").Resize(.Rows.Count, .Columns.Count)
End With
With Formula
    .Formula = "=if(ac2>0,""otc"",""mrc"")"
End With
Set datos = Nothing: Formula = Nothing
End Sub
Respuesta

Yo la haría así

'la variable i te permite moverte hacia abajo, arranca en 2 si tienes un encabezado o caso contrario arranca desde 1

i=2

Do

'28 es la columna ab y 36 corresponde a la columna aj si tus datos están en columnas diferentes solo tienes que contar y colocar el número correcto

If cells(i,28).value>0 then

Cells(i,36).value="otc"

Else

Cells(i,36).value="mrc"

End if

i=i+1

'al cerrar el lazo en donde dice 1 debes cambiar por el número de columna que tenga todos los datos llenos para que siga ejecutándose mientras encuentre datos en la columna

Loop until cells (i,1). value=""

Respuesta

A lo ya dicho verifica si esto aporta algo más

https://youtu.be/rAmyiwst3h8

https://youtu.be/DV7taRXLEzY

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas