En este tutorial, veremos cómo usar las funciones IFERROR y VLOOKUP juntas para atrapar y manejar diferentes errores. Además, aprenderá a realizar búsquedas virtuales secuenciales en Excel anidando varias funciones SI.ERROR una sobre otra.
Excel VLOOKUP y IFERROR: estas dos funciones pueden ser bastante difíciles de entender por separado, y mucho menos cuando se combinan. En este artículo, encontrará algunos ejemplos fáciles de seguir que abordan usos comunes e ilustran claramente la lógica de las fórmulas.
Si no tiene mucha experiencia con las funciones IFERROR y VLOOKUP, puede ser una buena idea revisar sus conceptos básicos primero siguiendo los enlaces anteriores.
Fórmula IFERROR VLOOKUP para manejar #N/A y otros errores
Cuando Excel Vlookup no puede encontrar un valor de búsqueda, arroja un error #N/A, como este:
Dependiendo de las necesidades de su negocio, puede disfrazar el error con su propio texto, cero o una celda en blanco.
Ejemplo 1. IFERROR con fórmula BUSCARV para reemplazar errores con su propio texto
Si desea reemplazar la notación de error estándar con su texto personalizado, ajuste su fórmula BUSCARV en IFERROR y escriba el texto que desee en el segundo argumento (value_if_error), por ejemplo, «No encontrado»:
SI.ERROR(BUSCARV(…),»No encontrado»)
Con el valor de búsqueda en B2 en la tabla principal y el rango de búsqueda A2:B4 en la tabla de búsqueda, la fórmula toma la siguiente forma:
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "Not found")
La siguiente captura de pantalla muestra nuestra fórmula IFERROR VLOOKUP de Excel en acción:
El resultado parece mucho más comprensible y mucho menos intimidante, ¿no?
De manera similar, puede usar INDEX MATCH junto con IFERROR:
=IFERROR(INDEX('Lookup table'!$B$2:$B$5,MATCH(B2,'Lookup table'!$A$2:$A$5,0)), "Not found")
La fórmula IFERROR INDEX MATCH es especialmente útil cuando desea extraer valores de una columna que se encuentra a la izquierda de la columna de búsqueda (búsqueda izquierda) y devolver su propio texto cuando no se encuentra nada.
Ejemplo 2. IFERROR con BUSCARV para volver en blanco o 0 si no se encuentra nada
Si no desea mostrar nada cuando no se encuentra el valor de búsqueda, haga que IFERROR muestre un cuerda vacía («»):
SI.ERROR(BUSCARV(…),»»)
En nuestro ejemplo, la fórmula es la siguiente:
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "")
Como puede ver, no devuelve nada cuando el valor de búsqueda no está en la lista de búsqueda.
Si desea reemplazar el error con el valor ceropon 0 en el último argumento:
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), 0)
¡Palabra de precaución! La función IFERROR de Excel detecta todo tipo de errores, no solo #N/A. ¿Es bueno o malo? Todo depende de tu objetivo. Si desea enmascarar todos los posibles errores, IFERROR Vlookup es el camino a seguir. Pero puede ser una técnica imprudente en muchas situaciones.
Por ejemplo, si creó un rango con nombre para los datos de su tabla y escribió mal ese nombre en su fórmula Vlookup, IFERROR detectará un #NAME? error y reemplácelo con «No encontrado» o cualquier otro texto que proporcione. Como resultado, es posible que nunca sepa que su fórmula está dando resultados incorrectos a menos que usted mismo detecte el error tipográfico. En tal caso, un enfoque más razonable sería atrapar solo los errores #N/A. Para esto, use la fórmula IFNA Vlookup en Excel 2013 y superior, IF ISNA VLOOKUP en todas las versiones de Excel.
La conclusión es: tenga mucho cuidado al elegir un compañero para su fórmula BUSCARV 🙂
Anide IFERROR dentro de BUSCARV para encontrar siempre algo
Imagina la siguiente situación: buscas un valor específico en una lista y no lo encuentras. ¿Qué opciones tienes? Obtenga un error N/A o muestre su propio mensaje. En realidad, hay una tercera opción: si su vlookup principal falla, ¡busque algo más que definitivamente esté allí!
Llevando nuestro ejemplo más allá, creemos algún tipo de tablero para nuestros usuarios que les muestre un número de extensión de una oficina específica. Algo como esto:
Entonces, ¿cómo extrae la extensión de la columna B en función del número de oficina en D2? Con esta fórmula regular de Vlookup:
=VLOOKUP($D$2,$A$2:$B$7,2,FALSE)
Y funcionará bien siempre que sus usuarios ingresen un número válido en D2. Pero, ¿qué pasa si un usuario ingresa un número que no existe? En este caso, ¡que llamen a la oficina central! Para esto, incrusta la fórmula anterior en el argumento de valor de IFERROR y coloca otra Vlookup en el argumento value_if_error.
La fórmula completa es un poco larga, pero funciona perfectamente:
=IFERROR(VLOOKUP("office "&$D$2,$A$2:$B$7,2,FALSE),VLOOKUP("central office",$A$2:$B$7,2,FALSE))
Si se encuentra el número de oficina, el usuario obtiene el número de extensión correspondiente:
Si no se encuentra el número de la oficina, se muestra la extensión de la oficina central:
Para hacer la fórmula un poco más compacta, puede usar un enfoque diferente:
Primero, verifique si el número en D2 está presente en la columna de búsqueda (tenga en cuenta que establecemos col_index_num en 1 para que la fórmula busque y devuelva el valor de la columna A): BUSCARV (D2, $ A $ 2: $ B $ 7,1 ,FALSO)
Si no se encuentra el número de oficina especificado, buscamos la cadena «oficina central», que definitivamente está en la lista de búsqueda. Para esto, envuelve la primera VLOOKUP en IFERROR y anida toda esta combinación dentro de otra función VLOOKUP:
=VLOOKUP(IFERROR(VLOOKUP(D2,$A$2:$B$7,1,FALSE),"central office"),$A$2:$B$7,2)
Bueno, una fórmula ligeramente diferente, el mismo resultado:
Pero, ¿cuál es la razón para buscar «oficina central», puede preguntarme? ¿Por qué no proporcionar el número de extensión directamente en IFERROR? Porque la extensión puede cambiar en algún momento en el futuro. Si esto sucede, deberá actualizar sus datos solo una vez en la tabla de origen, sin preocuparse por actualizar cada una de sus fórmulas BUSCARV.
Cómo hacer BUSCARV secuenciales en Excel
En situaciones en las que necesite realizar los llamados secuencial o encadenado Vlookups en Excel dependiendo de si una búsqueda anterior tuvo éxito o no, anide dos o más funciones IFERROR para ejecutar sus Vlookups una por una:
SI.ERROR(BUSCARV(…), SI.ERROR(BUSCARV(…), SI.ERROR(BUSCARV(…),»No encontrado»)))
La fórmula funciona con la siguiente lógica:
Si la primera BUSCARV no encuentra nada, el primer IFERROR detecta un error y ejecuta otra BUSCARV. Si la segunda BUSCARV falla, el segundo IFERROR detecta un error y ejecuta la tercera BUSCARV, y así sucesivamente. Si todas las Vlookups fallan, el último IFERROR devuelve su mensaje.
Esta fórmula IFERROR anidada es especialmente útil cuando tiene que buscar V en varias hojas como se muestra en el siguiente ejemplo.
Supongamos que tiene tres listas de datos homogéneos en tres hojas de trabajo diferentes (números de oficina en este ejemplo) y desea obtener una extensión para un número determinado.
Asumiendo que el valor de búsqueda está en la celda A2 en la hoja actual, y el rango de búsqueda es A2:B5 en 3 hojas de trabajo diferentes (Norte, Sur y Oeste), la siguiente fórmula funciona de maravilla:
=IFERROR(VLOOKUP(A2,North!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,South!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,West!$A$2:$B$5,2,FALSE),"Not found")))
Entonces, nuestra fórmula de «búsquedas V encadenadas» busca en tres hojas diferentes en el orden en que las anidamos en la fórmula, y trae la primera coincidencia que encuentra:
Así es como usa IFERROR con BUSCARV en Excel. ¡Gracias por leer y espero verte en nuestro blog la próxima semana!