Código que identifique el registro con la fecha más vieja en una base de datos

22/05/2007 - 01:24 por Insumos | Informe spam
Hola Gente del Foro:

Supongamos que yo tengo una base de datos en la que en la columna A tiene un
campo "Fecha", en la columna B tiene un campo "Clase" y en la C "Nombre".
Algo así:

Fecha Clase Nombre
10/05/07 A Claudio
15/05/07 A Pablo
15/05/07 B Pablo
20/05/07 A Manuel
20/05/07 B Jorge
25/05/07 A Jorge

Ahora, la pregunta es cómo sería un código que hiciera lo siguiente:
Busque dentro de los registros que sean de la clase A y dentro de esos
identifique cual es el registro que tiene la fecha más vieja y traiga ese
registro y lo exponga en un Label en un UserForm.
En el ejemplo el resultado sería: el Label1 diría 10/05/07.
Desde ya muchas gracias.

Mariano
CONTADURIA
 

Leer las respuestas

#1 Juan M
22/05/2007 - 14:52 | Informe spam
"Insumos" escribió en el mensaje
Hola Gente del Foro:

Supongamos que yo tengo una base de datos en la que en la columna A tiene
un
campo "Fecha", en la columna B tiene un campo "Clase" y en la C "Nombre".
Algo así:

Fecha Clase Nombre
10/05/07 A Claudio
15/05/07 A Pablo
15/05/07 B Pablo
20/05/07 A Manuel
20/05/07 B Jorge
25/05/07 A Jorge

Ahora, la pregunta es cómo sería un código que hiciera lo siguiente:
Busque dentro de los registros que sean de la clase A y dentro de esos
identifique cual es el registro que tiene la fecha más vieja y traiga ese
registro y lo exponga en un Label en un UserForm.
En el ejemplo el resultado sería: el Label1 diría 10/05/07.
Desde ya muchas gracias.

Mariano
CONTADURIA




Hola Mariano,

Lo que pides se puede hacer con la fórmula de excel BDMIN

½MIN(A3:B14;A3;B1:B2)

donde de A3:B14 están tus datos, en A3 el valor encabezado (o nombre del
campo que quieres que devuelva), y en B1:B2 el criterio.

Después de esto hacer esto lo podrías cargar en una etiqueta sin problemas.

Si lo prefieres por código solo ten en cuenta que este procedimiento puede
demorarse en función de los datos con los que estemos tratando.
Lo he asociado al click de un botón.


Un saludo,
Juan

Inicio Código
Private Sub CommandButton1_Click()
Dim MiRango As Range
Dim c As Range
Dim Menor As Date
Dim primero As String

Set MiRango = Range(Range("B3"), Range("B" & Rows.Count).End(xlUp))
Set c = MiRango.Find("a", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
primero = c.Address
Menor = c.Offset(, -1)
Do
If Menor > c.Offset(, -1) Then Menor = c.Offset(, -1)
Set c = MiRango.FindNext(c)
Loop While Not c Is Nothing And c.Address <> primero
End If
Label1.Caption = Format(Menor, "dd/mm/yyyy")
End Sub

Preguntas similares