Cómo convertir un resultado de búsqueda en un hipervínculo dentro de SI.ERROR

El problema del tipo de dato en las fórmulas

Hemos estado trabajando con una fórmula de Excel que intenta gestionar dos escenarios distintos: mostrar un enlace a Google si no encuentra un ID, y mostrar el número correspondiente si la búsqueda es exitosa. El desafío principal surgió al implementar la función SI.ERROR. Al principio, parece lógico envolver solo el error en la función de manejo de errores, dejando el resultado exitoso como texto simple.

Captura de pantalla de Excel mostrando una celda con una fórmula y flechas indicando cómo se genera un hipervínculo verde a MyAnimeList cuando la búsqueda es exitosa.
La fórmula final usando LET envuelve el resultado de la búsqueda directamente en HIPERVINCULO para garantizar que siempre se genere un enlace funcional si los datos existen.

¿Por qué fallaba la fórmula inicial?

El análisis revela que SI.ERROR no es capaz de normalizar los tipos de datos automáticamente. Cuando la búsqueda encuentra un valor, devuelve simplemente el contenido de la celda (un número), pero cuando falla, devuelve el objeto del hipervínculo. Esta discrepancia entre devolver un número plano y un objeto de enlace crea un problema estructural dentro de la lógica de la fórmula.

Solución 1: La técnica del doble BUSCARV

Para resolver este problema, primero podemos abordar la solución utilizando una estructura robusta. Esta estrategia implica repetir la función BUSCARV dos veces dentro de la misma expresión. Al hacer esto, envolvemos explícitamente el resultado exitoso en una nueva instancia de HIPERVINCULO(), asegurando que el objeto devuelto sea consistente con lo que deseamos mostrar al usuario.

Solución 2: Optimización con LET

Mientras que la técnica del doble BUSCARV funciona, podemos optimizar el rendimiento de nuestro código si utilizamos funciones más modernas. Al integrar la función LET, podemos almacenar el resultado de la búsqueda en una variable intermedia antes de aplicar las condiciones de error.

Fórmula final recomendada

Aquí está la implementación completa utilizando LET:

=LET(id;BUSCARV(G1135;IDs!$A$1:$B$4981;2;0); SI.ERROR(HIPERVINCULO(«https://myanimelist.net/anime/»&id;id); HIPERVINCULO(«https://www.google.com/search?q=MAL»&SUSTITUIR(G1135;» «;»+»);»Buscar»)))

Esta fórmula garantiza que si el ID se encuentra, mostraremos 5114 como texto visible con un enlace a MyAnimeList. Si no lo encuentra, mostraremos Buscar y abrirá la búsqueda de Google.