Fórmula excel buscar la fecha más alta

Buenas Tardes:
Estoy buscando una forma de excel que me permita buscar la fecha más alta de muchas fechas con dos criterios, es decir, supongamos que tengo la siguiente información:
Columna A: Nro Centro
Columna B: CIF
Columna C: Fecha
Columna D: Cobros
Yo necesito saber el ultimo cobro de un CIF respecto a un Nro de Centro, dado que puedo tener varios cobros con distintas fechas.
¿Se entiende mi pregunta?
Podría adjuntar un ejemplo, pero no sé como se hace
Si alguien por favor me podría ayudar!
Muchísimas gracias!

1 Respuesta

Respuesta
1
Te he preparado estas dos funciones que creo que están bastante claras para que puedas ajustarlas a tus necesidades:
Option Explicit
Const nColCentro = 1 ' Columna en la que se encuentra el centro
Const nColCIF = 2    ' Columna en la que se encuentra el cif
Const nColFecha = 3  ' Columna en la que se encuentra la fecha
Const nColCobros = 4 ' Columna en la que se encuentran los cobros
Function buscarMayorFecha(ByVal nCentro As Integer, ByVal cif As String) As Variant
    Dim nLin As Integer
    Dim maxFecha As Date
    Dim aux As Variant ' Para leer el contenido de la celda de la fecha si coinciden el centro y cif
    buscarMayorFecha = ""
    If Trim$(cif) = "" Then Exit Function
    maxFecha = DateSerial(1900, 1, 1)
    For nLin = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
        If Cells(nLin, nColCentro) = nCentro And UCase$(Cells(nLin, nColCIF)) = UCase$(cif) Then
            aux = Cells(nLin, nColFecha)
            If aux <> "" Then ' SI la celda contiene algo
                If IsDate(aux) Then ' Y es de tipo fecha
                    If aux > maxFecha Then maxFecha = aux ' Y es mayor que la última que teníamos... esta es la mayor
                End If
            End If
        End If
    Next nLin
    ' Si la máxima fecha es mayor que el 1/1/1900... entonces es que hemos encontrado alguna.
    ' Si no es mayor devolvemos... nada, una cadena de texto vacía que ya tiene asignado
    If maxFecha > DateSerial(1900, 1, 1) Then buscarMayorFecha = maxFecha
End Function
Function sumaCobrosCentroCifFecha(ByVal nCentro As Integer, ByVal cif As String, ByVal fecha As Variant) As Variant
    Dim nLin As Integer
    Dim sumaCobros As Double
    Dim snAlgunValor As Boolean
    Dim aux As Variant ' Para leer el contenido de la celda de la fecha si coinciden el centro y cif
    sumaCobrosCentroCifFecha = ""
    If Trim$(cif) = "" Or fecha = "" Then Exit Function
    snAlgunValor = False
    sumaCobros = 0
    For nLin = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
        If Cells(nLin, nColCentro) = nCentro And UCase$(Cells(nLin, nColCIF)) = UCase$(cif) And Cells(nLin, nColFecha) = fecha Then
            aux = Cells(nLin, nColCobros)
            If aux <> "" Then ' SI la celda contiene algo
                If IsDate(aux) Then ' Y es de tipo numérico... lo sumamos a los cobros
                    sumaCobros = sumaCobros + aux
                    snAlgunValor = True ' Hay algún valor encontrado
                End If
            End If
        End If
    Next nLin
    ' Si hemos encontrado algún valor... devolvemos la suma. Si no... devolvemos una cadena de texto vacía
    If snAlgunValor Then sumaCobrosCentroCifFecha = sumaCobros Else sumaCobrosCentroCifFecha = ""
End Function
En los campos 'texto' (supongo que el CIF) utilizo la función UCASE$ para que compare siempre en mayúsculas y evitar que pueda no reconocer un cif por estar en minúsculas.
Ufff no sé qué es esto ni como se utiliza en excel.
¿No existe una fórmula normalita para conseguilo? Tipo sumar. Si. Conjunto pero en lugar que sume que devuelva el valor más alto... ¿puede ser?
No sé si la hay, pero yo no la conozco.
El código que te he puesto hay que grabarlo en un módulo de Visual Basic.
Es fácil
Entra en el editor de Visual Basic a través del menú de herramientas - macros o bien pulsando las teclas <Alt><F11>
Una vez que se abra la ventana del editor, añade un nuevo módulo en el menú "insertar - módulo".
Te aparecerá una parte de la ventana en blanco (normalmente en la parte derecha y hacia arriba). Es ahí dónde tienes que copiar y pegar el código.
De esa forma definirás las nuevas funciones para tu hoja de cálculo y así podrás usarlas sin ningún problema.
Si me dejas una dirección de correo te mando una hoja de cálculo con las funciones ya grabadas.
De todas formas... animo, que no es tan difícil. Lo complicado es empezar, con el tiempo lo vas viendo cada vez más sencillo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas