Localizar la fecha más antigua y más reciente...

Tengo dos columna de datos, en A tengo las fechas y en B los nombres de los alumnos. Son un montón de filas que se encuentran en un archivo log. Quiero mostrar en una hoja aparte la fecha de la primera y última conexión de deterrminados alumnos cuyo nombre conozco. Estoy utilizando excel 2007. Supongo que como estoy un poco pez en estas cuestiones no doy con la solución a pesar de haber repasado todas las fórmulas.

1 respuesta

Respuesta
2
Puedes hacerlo apoyándote en columnas auxiliares, p.ej., creándote junto a las otras dos columnas una columna C nueva cuyo valor sea una celda vacía o la fecha según si el nombre es o no el del alumno que buscas:

Ejemplo para C1:   = SI(A1=Hoja2!$A$1;B1;"")
Siendo Hoja2! $A$1 La celda donde tienes el nombre del alumno.
Y luego hallar el MAX() y MIN() de esa columna:
      = MAX(Hoja1!C:C)
      = MIN(Hoja1!C:C)
Si quieres algo más elegante, sin necesidad de apoyarte en una columna auxiliar, puedes crearte una función (macro) que reciba como datos de entrada el rango de búsqueda y el nombre del alumno y que te devuelva la fecha mayor o menor, según lo que le pidas. Si necesitas esto último y quieres que te eche una mano, dímelo.
Gracias Ángel.
Es una solución válida, pero la veo complicada para cursos son muchos alumnos -los hay de más de 100 alumnos-.
Si tienes tiempo para contarme eso de la función (macro) sería estupendo.
Saludos.
Antes de nada, disculpa el retraso. Estuve bastante atareado estos días. Te paso más abajo la macro.
No sé si sabes cómo utilizarla, así que te lo cuento todos los pasos por si acaso:
1º Graba en tu libro la macro (Herramientoas --> Macros --> Editor de visual Basic --> Modulo1)
2º En la celda donde vayas a obtener la fecha mayor, selecciona como fórmula la función ObtenerFechaMaxMin dentro de la categoría de funciones "Definidas por el usuario". Tendrás que rellenar los 3 parámetros que te pide: Rango, Nombre y "Max" o "Min" (según proceda).
Ejemplos:
 =ObtenerFechaMaxMin($A$1:$B$5;Hoja2!$A$1;"Min")
 =ObtenerFechaMaxMin($A$1:$B$5;Hoja2!$A$1;"Max")
Ya está.
Si te funciona y te resuelve el problema, recuerda finalizar la pregunta.
En caso contrario, no dudes en decírmelo.
Saludos
Angel
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Function ObtenerFechaMaxMin(Rango As Range, Nombre As String, MaxMin As String) As Date
Dim MaxFecha, MinFecha As Date
Dim Fila, FilaInicial, FilaFinal As Integer
Dim ColumnaNombre, ColumnaFecha, NombreRango As String
ObtenerFechaMaxMin = CDate("01-01-1901")
MaxFecha = CDate("01/01/1901")
MinFecha = CDate("31/12/2999")
MaxMin = UCase(MaxMin)
If MaxMin = "MIN" Or MaxMin = "MAX" Then
    NombreRango = Replace(Rango.Address, "$", "")
    ColumnaFecha = Mid(NombreRango, 1, 1)
    ColumnaNombre = Mid(NombreRango, InStr(NombreRango, ":") + 1, 1)
    FilaInicial = Val(Mid(NombreRango, 2, InStr(NombreRango, ":") - 2))
    FilaFinal = Val(Mid(NombreRango, InStr(NombreRango, ":") + 2))
    For Fila = FilaInicial To FilaFinal
        Celda = ColumnaNombre + Trim(Str(Fila))
        If Range(Celda).Value = Nombre Then
            Fecha = Range(ColumnaFecha + Trim(Str(Fila)))
            If Fecha > MaxFecha Then
               MaxFecha = Fecha
            End If
            If Fecha < MinFecha Then
               MinFecha = Fecha
            End If
        End If
    Next
    If MaxMin = "MAX" Then
        ObtenerFechaMaxMin = MaxFecha
    Else
        ObtenerFechaMaxMin = MinFecha
    End If
End If
End Function
Espero que te sirviese la respuesta que te di. Si es así, mira a ver si puedes finalizar la pregunta.
En su día le dediqué una parte importante de mi tiempo a ayudarte. Si no tienes inconveniente, mira a ver si puedes finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas