Saltar al contenido

Atrapar los errores dentro de las fórmulas de Excel

Por David H. Ringstrom, CPA

De vez en cuando puedes elaborar una fórmula que en algunos casos devuelve un error, como #DIV/0! o #N/A. Muchos usuarios superan esta situación utilizando combinaciones de las funciones de la hoja de trabajo IF, ISERROR e ISNA. Sin embargo, el uso de estas funciones en conjunto puede a veces resultar en fórmulas innecesariamente complejas. En este artículo, discutiré una alternativa disponible para cualquiera que use Excel 2007 o posterior.

Atrapar los errores dentro de las fórmulas de Excel

Empecemos con un escenario común, donde el cálculo del cambio porcentual entre dos números resulta en un error #DIV/0!, como se ilustra en la figura 1. En la actualidad, la fórmula de la celda D2 toma esta forma:

=(B2-C2)/B2

Figura 1: Excel devuelve un error #DIV/0! cuando se intenta dividir por cero.

Como puedes ver, cuando copiamos esta fórmula en la columna, D4 devuelve #DIV/0! porque la celda B4 es igual a cero. Para eliminar el error #DIV/0!, podemos modificar la fórmula para que tome esta forma:

=IF(ISERROR((B2-C2)/B2)”,-“,(B2-C2)/B2)

Como se muestra en la figura 2, la fórmula de la celda D4 ahora devuelve un guión en lugar de #DIV/0!.

Figura 2: Una combinación de IF e ISERROR puede mostrar resultados alternativos cuando un cálculo da lugar a un error.

Para los no iniciados, la función SI tiene tres argumentos, o entradas, que son:

  • Prueba_lógica – En este caso, la función ISERROR realiza la prueba y devuelve VERDADERO o FALSO.
  • value_if_true – Si ISERROR devuelve TRUE, queremos que Excel devuelva un guión, que debemos encerrar entre comillas. Las comillas sólo son necesarias cuando queremos que la sentencia IF devuelva texto, por lo que no es necesario encerrar los valores numéricos, como el cero, entre comillas.
  • value_if_false – Si ISERROR devuelve FALSO, queremos que Excel realice nuestro cálculo original.

Aunque es válido, este enfoque introduce complejidad a la fórmula porque debemos repetir dos veces nuestro cálculo original. Sin embargo, como se muestra en la Figura 3, si nuestra hoja de cálculo sólo se utilizará en Excel 2007 o posterior, podemos racionalizar la fórmula a esto:

=IFERROR((B2-C2)/B2″,-“)

Figura 3: La función IFERROR agiliza complejas fórmulas para atrapar errores.

Introducido por primera vez en Excel 2007, IFERROR tiene dos argumentos:

  • Este es el cálculo que queremos probar para los errores.
  • value_if_error – Este es el resultado que queremos mostrar si nuestro cálculo devuelve un error.

Como pueden ver, el IFERROR elimina la necesidad de repetir cualquier parte del cálculo. Sin embargo, no es compatible con versiones anteriores de Excel. Como se muestra en la Figura 4, la función IFERROR devolverá #NAME? en Excel 2003 y anteriores. Si necesita compatibilidad con versiones anteriores de Excel, use el enfoque IF/ISERROR mencionado anteriormente en su lugar.

Figura 4: La función IFERROR es incompatible con Excel 2003 y anteriores, pero puede utilizarse en Excel 2007 y posteriores.

Además, una posible desventaja de ambos IFERROR e ISERROR es que enmascaran cualquier error de signo # que su fórmula pueda desencadenar. Puedes tener situaciones en las que quieras enmascarar un error #N/A pero ser notificado de otros errores, como #DIV/0!, #REF!, o #NAME?. Como se muestra en la figura 5, puedes elaborar una fórmula para atrapar sólo los errores #N/A, pero mostrar otros errores de signo # como #DIV/0!:

=IF(ISNA(VLOOKUP(A8,$A$1:$D$5,4,0)),0,VLOOKUP(A8,$A$1:$D$5,4,0))

Figura 5: Pruebas de ISNA específicamente para errores #N/A pero permitirá mostrar otros errores.

Los lectores de mirada aguda notarán que usé un cero en lugar del típico FALSO dentro de VLOOKUP para indicar una coincidencia exacta. Si no estás familiarizado con VLOOKUP, es una función que se usa para devolver valores de una lista que tiene cuatro entradas:

  • lookup_value – Representa el elemento que estás buscando dentro de una lista. Por ejemplo, en la fórmula anterior, A8 significa que queremos buscar la palabra “Manzanas”.
  • table_array – Esto representa las coordenadas de la celda de la lista que desea buscar. En la fórmula anterior, nuestra lista está compuesta por las celdas A1 a D5. VLOOKUP busca el valor de búsqueda en la primera columna de la tabla_array.
  • col_index_num – Este argumento le dice a VLOOKUP de qué columna quiere devolver un valor cuando se encuentra una coincidencia en la primera columna. En este caso queremos devolver el % de cambio de la cuarta columna de nuestro table_array.
  • range_lookup – Utiliza este ajuste críptico para indicar si quieres una coincidencia exacta o una coincidencia aproximada. En este caso, queremos una coincidencia exacta en la palabra “Manzanas”, así que introduce la palabra FALSO o un cero en este argumento final. Omite este argumento, o usa la palabra VERDADERO o un uno en esa posición para significar una coincidencia aproximada, como si estuvieras buscando un tramo de impuestos basado en un número de ingreso bruto.

Lea más artículos de David Ringstrom.

Sobre el autor:

David H. Ringstrom, Contador Público Certificado, dirige Accounting Advisors, Inc. una empresa consultora de programas informáticos y bases de datos con sede en Atlanta que ofrece servicios de capacitación y consultoría en todo el país. Contacte con David en [correo electrónico protegido] o sígale en Twitter . David habla en conferencias sobre Microsoft Excel, y presenta webcasts para varios proveedores de CPE, incluyendo el socio de AccountingWEB CPE Link .