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.