Ubicar fecha en columna, con valores repetidos quiero posicionarme en el 1ro

Ando necesitando una macro para poder posicionarme en la primer celda de una columna, donde los valores se repiten. Dejo una foto para que se entienda mejor:

Tengo esa columna y la siguiente macro:

Sub Macro2()
If Range("a1").End(xlDown).End(xlDown).Value <> Range("fecha").Value Then
    'aca si la ultima fecha escrita es diferente a la de mi celda con nombre "fecha"_ 
     ejecuta una macro que ya tengo aceitada.
ElseIf Range("a1").End(xlDown).End(xlDown).Value = Range("fecha").Value Then
    'aca si la ultima fecha igual, la idea es que me pise los valores, suponiendo _
     que "fecha" = 14/02/2020, tendria que ubicarme en la celda A14 y a partir de ahí_
     empiezo con otra macro que ya tengo tambien. 
End If
End Sub

El problema es que no se como, mediante macros, ubicar la primer celda que comienza con 14/02/2020 (en este ejemplo)

Respuesta
1

Este es el resultado de la macro

y esta es la macro

Sub posicionar()
Dim UNICOS As New Collection
FILAS = Range("A1").CurrentRegion.Rows.Count
Set tabla = Range("A3").Resize(FILAS - 2, 1)
For I = 3 To FILAS - 2
    fecha = tabla.Cells(I, 1)
    On Error Resume Next
    UNICOS.Add fecha, CStr(fecha)
    If Err.Number = 0 Then
    fila = WorksheetFunction.Match(CDbl(fecha), tabla.Columns(1), 0)
    tabla.Cells(fila, 1).Interior.ColorIndex = 4
    End If
    On Error GoTo 0
Next
Set UNICOS = Nothing: Set tabla = Nothing
End Sub

1 respuesta más de otro experto

Respuesta
1

Te dejo otra propuesta, sirve tanto para una tabla ordenada como no. Lo que hace es guardar en una variable x el nro de la fila encontrada o la primer fila libre si no encuentra la fecha.

Sub BUSCA_FECHA()
'x Elsamatilde
Set busco = Range("A:A").Find(Range("fecha"), LookIn:=xlValues, lookat:=xlWhole)
If busco Is Nothing Then
    x = Range("A" & Rows.Count).End(xlUp).Row + 1   'no lo encontró, guarda la primer fila libre
Else
    x = busco.Row   'fila del dato encontrado
End If
End Sub

Si necesitas que te devuelva la última fila ocupada le quitas el +1

PD) En el video 29 de mi canal encontrarás otros métodos de búsqueda.

¡Gracias! unos toquesitos y quedó así:

Sub BUSCA_FECHA()
'x Elsamatilde
Set busco = Range("A:A").Find(Range("Fecha"), LookIn:=xlValues, lookat:=xlWhole)
If busco Is Nothing Then
    x = Range("A" & Rows.Count).End(xlUp).Offset(1, 1).Select
    'no lo encontró, guarda la primer fila libre
Else
    x = busco.Offset(0, 1).Select   'fila del dato encontrado
End If
End Sub

Es justo lo que necesitaba! 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas