MinSiConjunto

Esta función nos permite obtener el valor mínimo 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ínimo del rango.

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

[1]: Rango de valores que queremos encontrar el valor mínimo

[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 MinSiConjunto(ValMin As Range, ParamArray prms() As Variant) As Variant
    '=MinSiConjunto([1];[2'];[3'];[2''];[3''].....)
       '[1]: Rango de valores que queremos encontrar el valor minimo
       '[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 MIN As Variant
 
 
    filaInit = ValMin.Row
    filaFinal = filaInit + ValMin.Count - 1
    Dim x As Variant
    x = (UBound(prms) + 1) / 2
    MIN = "#ERROR"
    If (x = Int(x)) Then
        On Error Resume Next
        MIN = "#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(ValMin(i)) < CLng(MIN)) Then
                    MIN = CLng(ValMin(i))
                End If
            End If
        Next i
    End If
    MinSiConjunto = MIN
End Function

Deja un comentario

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