Hojas de cálculo y evaluación de expresiones de Excel
Hace referencia a: Excel 2013 | Office 2013 | Visual Studio
El contenido de las celdas de la hoja de cálculo de Microsoft Excel se evalúa en uno de los cuatro tipos de datos básicos:
- Numbers
- Boolean TRUE o FALSE
- Strings
- Errors
Las matrices de tipos mixtos de estos tipos también se pueden introducir en fórmulas como argumentos para funciones o como valores que expanden más de una celda de una fórmula de matriz.
Cuando un usuario (o una macro de comandos) escribe algo en una celda, Excel intenta interpretar la entrada y muestra un mensaje de error si no puede. Si la entrada se empieza por un prefijo de cadena (una comilla simple), Excel coloca todos los caracteres de entrada en la celda tal como los proporciona, sin modificar. (No se muestra el prefijo de cadena). Si la entrada comienza con =, +o -, Excel intenta interpretar la entrada como una fórmula. Si la sintaxis es incorrecta o se detiene la evaluación, se muestra un error y la celda se pone en modo de edición. De lo contrario, Excel intenta identificar, convertir y evaluar los operadores y los nombres de la función, y sus argumentos.
Antes de aplicar el operador, los operandos se evalúan de izquierda a derecha. Las funciones se evalúan a partir de los operadores de mayor prioridad y más internos (más anidados). Si los argumentos de función o los operandos no se pueden convertir a los tipos esperados, la evaluación produce un error y da como resultado un error #VALUE!. Cuando no se reconoce un token (que no es un valor literal) como una función, o un nombre o una etiqueta definida, la evaluación produce un error y da como resultado un error #NAME?.
Si la entrada no empieza por cualquiera de estos, Excel comprueba los patrones conocidos de entrada, como fechas, horas, cantidades de moneda, porcentajes o n�meros, y los interpreta seg�n corresponda. Esto se hace de forma específica de la configuración regional. Si ninguna de estas interpretaciones tiene sentido, Excel vuelve a considerar la entrada como una cadena y la coloca en la celda sin cambiar.
Excel admite otros tipos de datos, el m�s visible de ellos es una referencia de rango. Excel convierte las referencias a los valores de las celdas a las que hace referencia al evaluar los argumentos para los operadores y las funciones que no toman argumentos de referencia, o cuando la expresi�n de una f�rmula de celda se reduce a una referencia.
Excel expone la capacidad de reducir cualquier cadena de caracteres v�lidos a uno de los cuatro tipos de datos de hoja de c�lculo b�sicos con EVALUATE de la funci�n XLM y su equivalente de la API de C xlfEvaluate. Entre otras cosas, esta funci�n proporciona una manera sencilla de evaluar los rangos con nombre en c�digo de la DLL. Esta función difiere del comportamiento descrito anteriormente solo en que en lugar de mostrar mensajes de error o habilitar la edición de la celda, devuelve un error #VALUE! si se produce un error en la evaluación de la expresión.
Números
Todos los números de hoja de cálculo de Excel se representan internamente como un número de punto flotante de precisión doble de 8 bytes, incluidos todos los enteros. Sin embargo, la implementaci�n de estos n�meros en Excel no es totalmente compatible con IEEE, como se muestra en la siguiente tabla.
Tipo | Máximo | Mínimo |
---|---|---|
Doble de 8 bytes IEEE |
1.7976931348623157E+308 |
2.2250738585072014E-308 |
Hoja de cálculo (devuelto por la función o el valor de pegado) |
1.7976931348623157E+308 |
2.22507385850721E-308 |
Hoja de cálculo (entrada manual) |
9.99999999999999E+307 |
2.22507385850721E-308 |
Los números de IEEE por debajo de lo normal (es decir, los números del rango 2,2250738585072009E \endash 308 4,9406564584124654E \endash 324) no se admiten en las hojas de cálculo de Excel, pero se admiten en los dobles de VBA.
Si una funci�n DLL devuelve IEEE +/- infinity o un doble no v�lido, Excel lo convierte en #NUM!. Todos los n�meros por debajo de lo normal y los n�meros menores que el normal positivo m�nimo de Excel se convierten en cero positivo. Se admite el cero negativo de IEEE, es decir, una función DLL lo puede devolver y se muestra como -0. (El operador < no busca el cero negativo y, por lo tanto =A1<0 se eval�a como TRUE si A1 contiene un cero negativo).
Tenga en cuenta que algunos formatos de número tienen límites más estrechos, por ejemplo, fechas y horas. La división de enteros es, de hecho, una división de número de punto flotante y puede, en casos extremos, dar un resultado no entero cuando el resultado preciso debería ser un entero.
Cadenas Unicode largas
Todas las cadenas que el usuario ve en Excel tienen para muchas versiones ahora se almacenan internamente como cadenas Unicode. Las cadenas de hoja de cálculo Unicode pueden tener hasta 32 767 (215 - 1) caracteres de longitud y pueden contener cualquier carácter Unicode válido.
Al introducir la API de C, las cadenas de hoja de cálculo eran cadenas de bytes limitadas a una longitud de 255 caracteres, y la API de C reflejaba estos límites. Con Excel 2007, la API de C se actualiza para controlar las cadenas Unicode largas de Excel. Esto significa que las funciones DLL registradas de la manera correcta pueden aceptar argumentos Unicode y devolver cadenas Unicode.
Nota:
Las cadenas de bytes todavía se admiten totalmente en la API de C para la compatibilidad con versiones anteriores. Sin embargo, siguen teniendo el mismo límite de 255 caracteres.
Devolver errores
Excel evalúa las celdas para buscar errores cuando no puede convertir los argumentos de función o de operador al tipo correcto, o si no reconoce una función o un nombre definido. Estos dos escenarios se describen anteriormente. Cuando los operadores y las funciones de hoja de cálculo integradas fallan, producen errores que informan al usuario del tipo de error. Debe hacer que las funciones de complemento devuelvan errores coherentes con el comportamiento en Excel.
#NULL!
Algunas funciones de información XML devuelven el error #NULL!. Por ejemplo, al llamar a GET.DOCUMENT(78) o a la función de la API de C equivalente xlfGetDocument con el argumento 78, cuando no hay resultados de impresoras instalados en este error que se devuelve. Algunas funciones también pueden devolverlos cuando, por ejemplo, evalúan una cadena vacía.
Es posible que quiera devolver este error de la función de complemento cuando ninguno de los otros errores sea adecuado.
#DIV/0!
El operador de división de Excel devuelve el error #DIV/0! cuando el denominador se evalúa en cero o un número es demasiado pequeño para ser representado como distinto de cero por Excel. Algunas funciones que, por definici�n, implican una divisi�n, tambi�n pueden devolver este error. Por ejemplo, AVERAGE devuelve este error si ninguna de las entradas se puede convertir a n�meros.
Solo debe considerar devolver este error desde la función de complemento para indicar que se detectó una división entre cero.
#VALUE!
Excel devuelve el error #VALUE! si una función o un argumento de operador no se puede convertir al tipo necesario. En el caso de los argumentos de función que no se pueden convertir, por ejemplo =LN("X")
, Excel no llama al código de función. Este es un punto que se debe recordar al escribir y depurar las funciones de complemento.
Algunas funciones devuelven este error si no se puede convertir un argumento dentro del c�digo de funci�n. Por ejemplo, DATEVALUE("30-Feb-2007")
se produce este error a pesar de que el argumento es del tipo correcto. En este caso, es la función la que devuelve el error desde dentro de su código. Algunas funciones devuelven este error aunque los tipos de valor y los intervalos sean permitidos, por ejemplo FIND("a","xyz")
, devuelve este error.
Debe considerar devolver este error desde la función de complemento para indicar que los argumentos son del tipo incorrecto, no se pueden convertir al tipo correcto o están fuera del rango, aunque debe devolver #NUM! para los argumentos numéricos fuera del rango. También debe considerar devolver este error cuando los argumentos de rango o de matriz tienen el tamaño o la forma incorrectos.
#REF!
Excel genera el error #REF! dentro de una expresión cuando se copia en una ubicación donde la referencia relativa resultante queda fuera de los límites. Por ejemplo, si la celda B2 contiene la fórmula =A1
, copiarla en la celda B1 da como resultado una fórmula =#REF!. Este error también se genera en las fórmulas que contienen una referencia que se sobrescribe en una operación de cortar y pegar, o se elimina de una fila, columna o eliminación de hoja de cálculo. Algunas funciones que pueden devolver referencias pueden devolver este error, por ejemplo, OFFSET(A1,-1,-1)
. Los nombres de hoja de c�lculo cuyas definiciones contienen referencias que dejan de ser v�lidas se eval�an para este error.
Si la funci�n de complemento toma argumentos de referencia, considere devolver este error si las referencias no son v�lidas, o si pasa un error de referencia. La secci�n sobre XLOPER o XLOPER12 de Administraci�n de memoria en Excel describe c�mo crear funciones que pueden aceptar y devolver argumentos de referencia.
#NAME?
Excel genera el error #NAME? cuando una expresión contiene un token no reconocido como una función o un nombre definido. Si la función de complemento acceder a un nombre definido y no está definido, considere devolver este error.
#NUM!
Muchas de las funciones numéricas y matemáticas integradas en Excel devuelven el error #NUM! cuando una entrada numérica está fuera del intervalo permitido, por ejemplo, LN(0)
. Considere devolver este error desde la función de complemento para indicar que una entrada numérica no era válida o estaba fuera del rango.
#N/A
A menudo se devuelve el error #N/A para indicar que un resultado correcto o significativo no est� disponible. Por ejemplo, MATCH con el tercer cero de argumento devuelve este error si no se encuentra una coincidencia exacta. Este error tambi�n se puede generar con la funci�n NA y se puede detectar espec�ficamente con la funci�n ISNA. Por lo tanto, es un error frecuente en hojas de c�lculo para indicar un rango de condiciones espec�ficas de la aplicaci�n.
Vea también
Conceptos de programación de Excel
Programar con la API de C en Excel
Evaluar los nombres y otras expresiones de fórmulas de la hoja de cálculo