Ubicarse en la primera fila de una columna Excel Macros

Tengo un campo estado, del cual estoy aplicando algunos filtro. Lo que deseo es ubicarme en la primera fila de esa columna por macro.

Ubicacion = ActiveCell.Address(False, False)
Fila = ActiveCell.Row
COLUMNA = Replace(Ubicacion, Fila, "")
un = Range("A1048576").Top(xlUp).Row
Range(Cells(2, COLUMNA).Address & ":" & Cells(un, COLUMNA).Address).Select
ActiveCell.FormulaR1C1 = "TERMINADA"
Selection.AutoFill Destination:=Range(Cells(2, 15).Address & ":" & Cells(un, 15).Address)

En la fila 6: Range(Cells(2, COLUMNA)

Estoy tratando de posicionarme en la primera fila de la columna estado y obviamente no es "2". No se si existe un código también para ubicarme en la primera fila así como para ubicarte en la ultima fila (un = Range("A1048576"). Top(xlUp). Row).

1 Respuesta

Respuesta
1

Te anexo el código, en la variable pfila está la primera fila y en ufila la última fila de la columna activa.

Sub ubicar()
'Por.Dante Amor
    Ubicacion = ActiveCell.Address(False, False)
    Fila = ActiveCell.Row
    COLUMNA = Replace(Ubicacion, Fila, "")
    ufila = Range(COLUMNA & Rows.Count).End(xlUp).Row
    pfila = 1
    Do While Cells(pfila, COLUMNA) = ""
        pfila = pfila + 1
    Loop
    '
    'Aquí continúa tu código
    '
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Estoy viendo tu código pero no veo la lógica, te explico:

Cuando yo aplico los filtros en mi encabezado. La siguiente fila ya no seria 2 sino me muestra la fila 17500. Esta fila puede variar cuando se actualice la base.

Lo que yo deseo hacer es ubicarme en esa fila 17500 de esa columna y seleccionarlo hasta la ultima fila para hacer ...

Range(Cells(2, COLUMNA3).Address & ":" & Cells(un, COLUMNA3).Address).Select
ActiveCell.FormulaR1C1 = "TERMINADA"

Obviamente el numero 17500 puede variar cuando se actualice la base y eso se hace diario.

Puedes explicarlo con ejemplos, pon unas imágenes

Ok. Aquí el ejemplo, como veras tengo filtrado mi campo status. Ahora lo que intento hacer es cambiar FINALIZADO por TERMINADO.

No quiero decirte como quisiera solucionarlo, sino mejor dime como lo harías con macros. Gracias

También deseo saber como selecciono todos los registros de la columna status con macros. Gracias

Para reemplazar "Finalizado" con "Terminado":

Sub Macro1()
'
    Columns("O:O").Replace What:="FINALIZADO", Replacement:="TERMINADO"
End Sub

Para seleccionar los datos:

Sub Macro2()
'
    Columns("O:O").Select
End Sub

Si después de seleccionarlos los vas a copiar, automáticamente excel selecciona los datos visibles:

Sub Macro3()
'
    Columns("O:O").Copy
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

¡Gracias! Dante, es genial. No sabia eso. Ahora ya ampliaste mi conocimiento para intentar nuevas cosas. Saludos

Dante no me di cuenta que cuando lo selecciono también incluye el encabezado. Como podría arreglarlo.

Columns("O:O").Select

Prueba esto:

u = Range("O" & Rows.Count).End(xlUp).Row
If u = 1 Then u = 2
Range("O2:O" & u).Select

No funciona. Yo no trabajo con el nombre de una columna especifica(O). Yo tengo que hacer una macro que soporte todo. Es decir que si agregan o eliminan columnas el código no se afecte.

Rows("1:1").Select --selecciono toda la fila
Selection.Find(What:="AÑO", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate --Busco la Columna AÑO
Ubicacionx = ActiveCell.Address(False, False) 
Filax = ActiveCell.Row
Columnax = Replace(Ubicacionx, Filax, "")--Capturo la letra de la Columna
Columns(2, Columnax).Copy --Aquí tengo que averiguar como cambiar el 2 por una variable que me permita ubicarme en la segunda fila

Lo que necesito es ubicarme en la segunda fila después del encabezado, independiente de que esta fila comience en 2 o 1000.

Prueba con lo siguiente:

    Rows("1:1").Select '--selecciono toda la fila
    Selection.Find(What:="AÑO", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate '--Busco la Columna AÑO
    Ubicacionx = ActiveCell.Address(False, False)
    Filax = ActiveCell.Row
    columnax = Replace(Ubicacionx, Filax, "")   '--Capturo la letra de la Columna
    u = Cells(Rows.Count, columnax).End(xlUp).Row
    Range(Cells(2, columnax), Cells(u, columnax)). Copy

Lo que hace es copiar desde la fila 2 hasta la última fila de la columna que seleccionaste en el Find, si los datos están filtrados, solamente copiará los datos que están visibles.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas