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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Ivan
22/05/2007 - 23:08 | Informe spam
hola chicos, aqui va otra propuesta

aunque no lo dices, supongo que el dato lo escribiras/seleccionaras en algun control de un formulario (por lo del label
que mencionas), el codigo es mas generico, y usa un inputbox y un msgbox. no creo que te sea dificil adaptarlo

Sub BuscarUltimafecha()
Dim celda As Range, dato As String
[a1].CurrentRegion.Sort key1:=[a2], order1:=xlAscending, header:=xlYes
dato = InputBox("Escribe el dato a buscar")
If dato <> "" Then
Set celda = [b:b].Find(dato, [b65536].End(xlUp).Offset(1), xlValues, _
xlWhole, xlByColumns, xlPrevious)
If Not celda Is Nothing Then
MsgBox celda.Offset(, -1)
Set celda = Nothing
End If
End If
End Sub

un saludo
Ivan
Respuesta Responder a este mensaje
#3 Ivan
22/05/2007 - 23:13 | Informe spam
perdon, creia que era la fecha mas reciente. Para la mas antigua prueba este otro

Sub BuscarUltimafecha()
Dim celda As Range, dato As String
[a1].CurrentRegion.Sort key1:=[a2], order1:=xlAscending, header:=xlYes
dato = InputBox("Escribe el dato a buscar")
If dato <> "" Then
Set celda = [b:b].Find(dato, [b1], xlValues, _
xlWhole)
If Not celda Is Nothing Then
MsgBox celda.Offset(, -1)
Set celda = Nothing
End If
End If
End Sub
Respuesta Responder a este mensaje
#4 Insumos
24/05/2007 - 23:45 | Informe spam
Muchas gracias a los dos por las soluciones propuestas. Las dos funcionan
bien, aunque con métodos distintos. Todavía no he decidido cual opción usar
ya que todavía estoy "armando" la planilla (que tiene varias cosas) y veré
cual se presenta como la más conveniente cuando este más avanzada la
planilla en su totalidad.
Muchisimas gracias otra vez por su valiosa ayuda!
Saludos!

Mariano


"Ivan" escribió en el mensaje
news:
perdon, creia que era la fecha mas reciente. Para la mas antigua prueba


este otro

Sub BuscarUltimafecha()
Dim celda As Range, dato As String
[a1].CurrentRegion.Sort key1:=[a2], order1:=xlAscending, header:=xlYes
dato = InputBox("Escribe el dato a buscar")
If dato <> "" Then
Set celda = [b:b].Find(dato, [b1], xlValues, _
xlWhole)
If Not celda Is Nothing Then
MsgBox celda.Offset(, -1)
Set celda = Nothing
End If
End If
End Sub


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida