MaxSiConjunto

Esta función nos permite obtener el valor máximo de un rango con distintas condiciones. Sería algo parecido a la función sumar.si.conjunto, pero el resultado final es el valor máximo del rango.

=MaxSiConjunto([1];[2′];[3′];[2”];[3”]…..)

[1]: Rango de valores que queremos encontrar el valor máximo/p>

[2′]: Rango que tienen las condiciones

[3′]: Condición

[2”]: Segundo Rango que tienen las condiciones

[3”]: Segunda Condición ‘…… Tantos rangos y condiciones como quieras

Public Function MaxSiConjunto(ValMax As Range, ParamArray prms() As Variant) As Variant
 
    '=MaxSiConjunto([1];[2'];[3'];[2''];[3''].....)
       '[1]: Rango de valores que queremos encontrar el valor máximo
       '[2']: Rango que tienen las condiciones
       '[3']: Condición
       '[2'']: Segundo Rango que tienen las condiciones
       '[3'']: Segunda Condición
       '...... Tantos rangos y condiciones como quieras
 
       'abelorteu@informaticaea.com
 
    Dim filaInit As Long
    Dim filaFinal As Long
    Dim Condicion As Boolean
    Dim MAX As Variant
 
 
    filaInit = ValMax.Row
    filaFinal = filaInit + ValMax.Count - 1
    Dim x As Variant
    x = (UBound(prms) + 1) / 2
    MAX = "#ERROR"
    If (x = Int(x)) Then
        On Error Resume Next
        MAX = "#ERROR"
        For i = 1 To filaFinal - filaInit + 1
            Condicion = True
            For a = 1 To x
                If (UCase(Trim(prms(a * 2 - 2)(i))) <> UCase(Trim(prms(a * 2 - 1)))) Then
                    Condicion = False
                End If
            Next a
            If Condicion Then
                If (CLng(ValMax(i)) > CLng(MAX)) Then
                    MAX = CLng(ValMax(i))
                End If
            End If
        Next i
    End If
    MaxSiConjunto = MAX
End Function

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *