UDF: eXl_CAMBIAR que permite realizar cambios condicionales en Excel

0



 La función eXl_CAMBIAR es una función personalizada de VBA que se ha creado con el propósito de sustituir una expresión por un valor específico, teniendo en cuenta condiciones proporcionadas. A diferencia de la función CAMBIAR, que solo se aplica a valores exactamente iguales, esta función complementa perfectamente dicha limitación, ofreciendo una alternativa eficiente a la anidación de funciones SI, a la función SI.CONJUNTO, o a las funciones BUSCARV, BUSCARH y BUSCARX, si lo que se busca es no utilizar tablas auxiliares. 

 

La sintaxis de la función "eXl_CAMBIAR " es:


eXl_CAMBIAR (Expresión, Valor1, Resultado1, Valor2, Resultado2, ..., [ValorN], [ResultadoN])


donde


Expresión: La expresión que se evaluará para determinar si se cumple una condición.


Valor: Un rango de valores y condiciones. Los valores impares (1, 3, 5, ...) del rango representan las condiciones, mientras que los valores pares (2, 4, 6, ...) representan los valores correspondientes que se devolverán si se cumple una condición.


Funcionalidad:

La función eXl_CAMBIAR se utiliza para realizar reemplazos condicionales en VBA, donde se evalúa una expresión y se devuelve un valor específico si se cumple una de las condiciones proporcionadas en el valor del rango.


La función eXl_CAMBIAR recibe la Expresión y el valor del rango como parámetros. Utiliza un bucle For para iterar a través de los elementos del valor del rango, comenzando desde el primer elemento hasta el penúltimo elemento.


En cada iteración, se verifica si la Expresión cumple con la condición correspondiente. Esto se hace llamando a la función privada OdC (Operador de Comparación), esta función auxiliar realiza las comparaciones, analiza las condiciones especificadas para determinar si la expresión cumple con dichas condiciones.


Si la Expresión cumple con la condición, se asigna el valor correspondiente (el siguiente valor después de la condición en el valor del rango). 


Si no se cumple ninguna de las condiciones anteriores, se verifica si la cantidad de elementos en el valor del rango es par o impar.


  • Si es par, se asigna "Ninguna coincidencia"
  • Si es impar, se asigna el último valor que se devolverá de no existir ninguna coincidencia.


Finalmente, la función eXl_CAMBIAR devuelve el valor asignado durante el proceso.


Código #1: 


Function eXl_CAMBIAR (Expresión As Variant, ParamArray Valor() As Variant) As Variant

    Dim i As Integer

    For i = 0 To UBound(Valor) - 1 Step 2

        If OdC(Expresión, Valor(i)) Then

            eXl_CAMBIAR = Valor(i + 1)

            Exit Function

        End If

    Next i

    If UBound(Valor) Mod 2 = 0 Then

        eXl_CAMBIAR = Valor(UBound(Valor))

    Else

        eXl_CAMBIAR = "No existen coincidencias"

    End If

End Function


Código #2:

Private Function OdC(Valor As Variant, c As Variant) As Boolean

    Dim o As String, cv As Variant

    o = Left(c, 1)

    cv = Mid(c, 2)

    If IsNumeric(cv) Then

        Select Case o

            Case "<"

                OdC = Valor < CDbl(cv)

            Case ">"

                OdC = Valor > CDbl(cv)

            Case Else

                OdC = False

        End Select

    Else

        Select Case o

            Case "="

                OdC = Valor = cv

            Case Else

                OdC = False

        End Select

    End If

    If Left(c, 2) = "<=" Then

        OdC = Valor <= CDbl(Right(c, Len(c) - 2))

    ElseIf Left(c, 2) = ">=" Then

        OdC = Valor >= CDbl(Right(c, Len(c) - 2))

    End If

End Function


👉 Como hacer que la UDF (User Defined Functions) esté disponible como una Función Nativa de Excel


⭐ Si te gustó, por favor regístrate en nuestra Lista de correo y Suscríbete a mi canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

Entradas que pueden interesarte

Sin comentarios

Etiquetas:
#aprendiendoexcel365, #josealcaldealias, #Excel, #funciones, #UDF, #Visual Basic, #VBA, #DAX, #Tips, #Basico, #Microsoft Excel, #Cursos Excel OnLine, #Aprende Excel, #Aprende Excel OnLine, #Excel 365, #Power Pivot, #Power BI, #Power Query, #Google Sheets, #Macros, #Código VBA, #Tutoriales Excel, #MTV, #Vbscript, #TypeScript, #Lenguaje M, #fórmulas, #funciones, #paso a paso, #funciones Excel, #libros, #tablas, #formatos, #hojas, #datos, #gráfico, #análisis de datos, #base de datos, #dashboards, #tablas dinámicas, #excel desde cero, #hoja de cálculo, #plantillas de Excel