UDF: IB·BUSCARX alternativa a la función BuscarX para versiones de Excel inferiores a 2021
La función IB·BUSCARX es una función personalizada de VBA que se ha creado con el propósito de brindar una alternativa similar de la función BuscarX para las versiones de Excel que no cuentan con dicha función.
A continuación se presenta una descripción de los parámetros y la funcionalidad de esta función:
Sintaxis:
La sintaxis de la función "IB·BUSCARX" es la siguiente:
=IB·BUSCARX(ValorBuscado, MatrizBuscada, MatrizDeVuelta, [SiNoSeEncuentra], [Coincidencia])
Parámetros:
ValorBuscado: Es el valor que deseas buscar en la matriz de búsqueda.
MatrizBuscada: Es la matriz en la que se realizará la búsqueda del valor.
MatrizDeVuelta: Es la matriz desde la cual se obtendrá el valor correspondiente si se encuentra una coincidencia.
SiNoSeEncuentra (opcional): Es el valor que se devolverá si no se encuentra el valor buscado. Si no se proporciona, se utilizará el valor predeterminado "No se encontró el valor.".
Coincidencia (opcional): Es un valor booleano que indica si se debe buscar una coincidencia exacta (1) o una coincidencia aproximada (0). Si no se proporciona, se utilizará el valor predeterminado 1 (coincidencia exacta).
Funcionalidad:
La función primero asigna los argumentos a las variables locales. Luego, utiliza la función Match de Excel para buscar el ValorBuscado en la MatrizBuscada. Dependiendo del valor del argumento Coincidencia, se especifica el tipo de coincidencia en la función Match (1 para coincidencia exacta y 0 para coincidencia aproximada).
Si se encuentra un resultado válido (es decir, no se produce un error), la función utiliza la función Index de Excel para obtener el valor correspondiente en la MatrizDeVuelta. Si no se encuentra el valor, se asigna el valor especificado en el argumento opcional SiNoSeEncuentra.
Finalmente, la función asigna el valor B como el valor de retorno de la función IB·BUSCARX.
Código:
Function IB·BUSCARX(ByVal ValorBuscado As Variant, ByVal MatrizBuscada As Range, ByVal MatrizDeVuelta As Range, Optional ByVal SiNoSeEncuentra As String = "No se encontró el valor.", Optional ByVal Coincidencia As Boolean = True) As Variant
Dim VB As Variant, MB As Range, MV As Range, B As Variant, P As Variant
VB = ValorBuscado
Set MB = MatrizBuscada
Set MV = MatrizDeVuelta
P = Application.Match(VB, MB, IIf(Coincidencia, 0, 1))
If Not IsError(P) Then
B = Application.Index(MV, P)
Else
B = SiNoSeEncuentra
End If
IB·BUSCARX = B
End Function
Comentarios
Publicar un comentario