Buscar ultimo registro de un dato llave en excel

De nueva cuenta acudiendo a ustedes. Tengo una base en Excel con las siguientes características: en la columna A tengo un dato llave (por ejemplo, el número de seguridad social) y en la columna B tengo las fechas en que fue modificado dicho registro (el alta o la baja del seguro social). Entonces, si busco el número de seguridad social 123456789 es posible que me arroje dos fechas, una del alta y la otro de la baja. Pero resulta que quiero buscar la última que fue registrada. Ya intenté con buscarv pero siempre me arroja el primer registro. ¿Hay alguna fórmula o serie de fórmulas que me permitan obtener la última fecha de registro?

1 respuesta

Respuesta
4

En mi ejemplo voy a imaginar que tu tabla ocupa el rango A1:B100, siendo la primera fila el encabezado. Ahora ordena alfabéticamente tu tabla por el campo nº seg.soc, que está en la columna A.

En la Ceda D8 haremos la consulta y en la celda E8 pon esta fórmula:

=DESREF(A1;COINCIDIR(D8;A1:A100;0)+CONTAR.SI(A1:A100;D8)-2;1)

Recuerda FINALIZAR y PUNTUAR mi labor

Agradezco la pronta respuesta. Desafortunadamente no puedo modificar la base (incluido el acomodo alfabético) y tampoco trabajo directamente con la base, es decir, los resultados que me pudiera arrojar la fórmula los tengo que poner en un nuevo libro de excel. Existiría alguna otra opción con la que se pueda hacer la búsqueda a pesar de éstos inconvenientes???? De nueva cuenta, gracias.

En mi ejemplo he imaginado una base de datos que ocupa el rango A1:¿B?

La consulta la hago en la celda D6 sobre uno de los valores que hay en la columna A para que me devulelva lo que hay en la columna B

Después solo tienes que ejecutar esta macro y te devolverá el último valor encontrado:

(Recuerda FINALIZAR y PUNTUAR mi labor)

Sub ultima_valor()

valor = Range("d6").Value

contarsi = Application.WorksheetFunction.CountIf(Columns(1), valor)

ultimo = Range("a65000").End(xlUp).Row

Set busca = ActiveSheet.Range("a1:a" & ultimo).Find(valor, LookIn:=xlValues, lookat:=xlWhole)

If Not busca Is Nothing Then

For por = 1 To contarsi

Range("e6").Value = busca.Offset(0, 1)

Set busca = ActiveSheet.Range("a1:a" & ultimo).FindNext(busca)

Next

End If

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas