Este es un texto extraído de aquí . Lo publiqué aquí como un hombre de paja. Si alguien que sabe cómo esto difiere de las fórmulas en las Hojas de cálculo de Google podría hacer un comentario, entonces quizás podamos terminar con una buena respuesta.
Fórmulas
Las fórmulas le permiten realizar cálculos dentro de las celdas de la tabla. Cada fórmula PUEDE comenzar con un prefijo de espacio de nombres que especifica la sintaxis y la semántica utilizada dentro de la fórmula. Cuando no hay prefijo, se utilizan la sintaxis y la semántica de fórmula predeterminadas como se describe a continuación. Esto es seguido por un signo igual y luego la fórmula misma. Las implementaciones PUEDEN aceptar múltiples sintaxis de fórmulas, y PUEDEN aceptar varias extensiones de la sintaxis de fórmulas predeterminada. Sin embargo, todas las implementaciones que aceptan fórmulas DEBEN aceptar la sintaxis y la semántica de fórmula predeterminada como se describe aquí. También PUEDEN aceptar extensiones a la misma.
Un documento que implementa el esquema estricto NO PUEDE usar un prefijo de espacio de nombres de fórmula (ya que no hay garantía de que otros sistemas receptores puedan procesarlo), y NO PUEDE usar ninguna extensión de la semántica y la sintaxis descritas a continuación .: En la fórmula predeterminada sintaxis, después del signo igual inicial, una fórmula debe ser una expresión. Una expresión puede ser un número, una cadena constante, un rango con nombre, un par de expresiones conectadas por un operador binario, una expresión prefijada por un operador unario, un operador lógico, una llamada de función, una dirección de celda o una expresión rodeada por paréntesis Una llamada a función y un operador lógico pueden tener cero o más parámetros separados por punto y coma, y cada parámetro DEBE ser una expresión. La sintaxis para cada uno de estos es la siguiente:
Números. Los números se escriben y leen en este formato usando la configuración regional "C" (usando el separador decimal "." Y sin separador de miles), usando setlocale (LC_NUMERIC, "C") o equivalente. Los números pueden terminar en%, lo que divide ese número entre 100. El "%" no cambia el significado de otros operadores, por lo que 2 + 10% es 2.1 (no 2.2). Tenga en cuenta que los signos iniciales - y + están permitidos como operadores unarios, que se describen a continuación. Los escritores DEBEN escribir números que coincidan con el patrón (tenga en cuenta que debe comenzar con un dígito): [0-9] + (. [0-9] +)? ([EE] [+ -]? [0-9] + )?%? Los lectores DEBEN poder leer estos números, así como aceptar números que comiencen con un "." Inicial, por lo que deben poder leer los números en la forma: ((. [0-9] +) | ([0- 9] + (. [0-9] +)? ([EE] [+ -]? [0-9] +)?))%? Cadenas constantes. Las cadenas constantes están entre comillas dobles; para incrustar una comilla doble, el carácter de comillas dobles se usa dos veces. Las cadenas se almacenan en formato UTF-8. Tenga en cuenta que dado que todo el contenido se almacena como XML, todas las comillas dobles en la fórmula se almacenan realmente como "en el XML. Las cadenas constantes coinciden con el patrón: \" ([^ "] | \" \ ") * \"
Rangos / campos nombrados. Los rangos / campos con nombre se refieren a un valor definido separado o un conjunto de valores (en una hoja de cálculo, que generalmente se refiere a una dirección de celda o conjunto de direcciones). Los nombres no distinguen entre mayúsculas y minúsculas, por lo que "a" y "A" se refieren al mismo rango. Las implementaciones deben aceptar al menos rangos con nombre que coincidan con el siguiente patrón: [A-Za-z] [A-Za-z0-9 _] *
Operadores Se aceptan operadores de prefijo y prefijo ordinarios. Estos tienen la siguiente asociatividad y precedencia (de menor a mayor prioridad):
Operador (s) de asociatividad Comentarios
izquierda <, =,>, <=,> =, <> Menor que, igual que, mayor que,
menor o igual que, mayor o igual que,
no igual a.
izquierda +, -, y Agregar, restar, concatenación de cadenas. Tenga en cuenta que
unario (prefijo) + y - tiene una prioridad diferente.
izquierda *, / Multiplicar, dividir. La división no se trunca, entonces
1/2 es igual a 0.5.
derecha ^ Potencia (2 ^ 3 es 8). Los lectores también DEBEN aceptar "**".
none +, - Prefijar operadores unarios, por ejemplo, -5 o - [. A1].
Tenga en cuenta que estos tienen una precedencia diferente a
sumar y restar.
La precedencia puede anularse usando paréntesis, por lo que "= 2 + 3 * 4" calcula 14 mientras que "= (2 + 3) * 4" calcula 20. Tenga en cuenta que +, -, *, /, ^ convierten cualquier cadena o valor binario se usan en números antes de computar; tenga en cuenta que & (concatenación de cadenas) convierte cualquier valor en cadenas antes de concatenarlas. Operadores lógicos. Los operadores lógicos tienen la misma sintaxis que las llamadas a funciones; sus nombres no distinguen entre mayúsculas y minúsculas, los parámetros están separados por punto y coma, y su nombre DEBE ir seguido de paréntesis. Los operadores lógicos son:
Operador Recuento de parámetros Comentario
TRUE () 0 Esta es una constante booleana, aunque su sintaxis hace que parezca una función
FALSO () 0 Esta es una constante booleana
NOT (expresión) 1 Si la expresión es VERDADERO () devuelve FALSO (), de lo contrario devuelve VERDADERO ()
AND (e1; e2 [; e] *) 2 o más Si todas las expresiones son TRUE () devuelve TRUE (), de lo contrario devuelve FALSE ()
O (e1; e2 [; e] *) 2 o más Si todas las expresiones son FALSE () devuelve FALSE (), de lo contrario devuelve TRUE ()
IF (condición; true_exp; false_exp)
3 Evalúa la condición. Si es cierto, devuelve true_exp, de lo contrario, devuelve false_exp
Las implementaciones de AND (), OR () e IF () deben cortocircuitar, es decir, deben evaluar de izquierda a derecha y solo evaluar las expresiones que deben evaluar para calcular el resultado. Una implementación puede elegir evaluar más, pero solo cuando las expresiones no tienen efectos secundarios. Las implementaciones de AND () y OR () DEBEN aceptar un número arbitrario de parámetros, pero DEBEN aceptar al menos 30 en cada uso. Las operaciones NOT (), AND () y OR (), así como la condición en IF (), están destinadas a valores booleanos; si se usan expresiones de otros tipos, una implementación NO DEBE considerar 0 como falso y cualquier otro valor numérico como verdadero, y NO DEBE considerar una cadena de longitud cero como falsa y cualquier otro valor de cadena como verdadero. Si se calcula un valor de error para una expresión, ese primer error es el resultado de la operación lógica.
Llamadas a funciones.Una llamada a función tiene un nombre de función que coincide con el patrón [A-za-z] [A-Za-z0-9 _] * seguido de un paréntesis de apertura, cero o más parámetros y un paréntesis de cierre. Los parámetros están separados por un punto y coma (no una coma), aunque los lectores PUEDEN aceptar opcionalmente llamadas a funciones utilizando comas también como separadores. Los nombres de las funciones no distinguen entre mayúsculas y minúsculas, por lo que "suma" y "SUMA" son la misma función. Si hay parámetros, cada uno debe ser una expresión y ninguno puede estar vacío, por lo que X (;) no es una llamada de función legal mientras RAND () es perfectamente legal. Si un parámetro es opcional, PUEDE omitirse, pero si se omite, su separador DEBE omitirse también (las especificaciones de la función deben indicar qué parámetros son opcionales y qué significa omitirlos). Las implementaciones típicas tendrán muchas funciones integradas, y la mayoría de las implementaciones también admiten una o más formas de crear funciones definidas por el usuario. Las funciones comunes incluyen:
- SUMA ( lista ): resume todos los números en el rango (s) de la lista .
- COUNT ( lista ): cuenta el número de números en el rango (s) de la lista
- PROMEDIO ( lista ): calcula el promedio, igual a SUMA ( lista ) / COUNT ( lista )
- MIN ( lista ): valor numérico mínimo de la lista
- MAX ( lista ) - valor máximo de la lista
- ROUND ( n , contar ) - redonda n a contar dígitos (si el recuento omite, contar = 0)
- INT ( n ): redondea n hacia abajo al entero más cercano.
- ISEVEN ( n ): devuelve TRUE () si n es par; de lo contrario, devuelve FALSE ().
- SUSTITUTO ( texto ; searchText ; newText ; ocurrencia ) - sustitutos newText para searchText en el texto , ocurrencia número de veces (si ocurrencia se omite, todas las veces).
Direcciones de celdas que contienen números . Las direcciones pueden ser relativas o absolutas. Una dirección relativa consiste en una letra de columna y un número de fila. Prefijar la letra de la fila o el número de columna con a $
hace que la fila o columna sea absoluta.
El espacio en blanco (espacio, tabulación, nueva línea y retorno de carro) se ignora en la sintaxis predeterminada de las fórmulas, excepto en el contenido de las constantes de cadena y como un separador para múltiples direcciones de rango de celdas en una lista de direcciones de rango de celdas.
Las interfaces de usuario de las implementaciones PUEDEN optar por aceptar y mostrar fórmulas de forma diferente a cómo se intercambian en este formato de datos. Por ejemplo, PUEDEN aceptar y mostrar números usando el formato de la localización actual, PUEDEN usar siempre una localización particular para formatos numéricos, PUEDEN usar comas en lugar de punto y coma para los separadores de parámetros, y PUEDEN aceptar y mostrar direcciones de celda sin requerir el uso de corchetes. Pero las interfaces de usuario de implementación DEBERÍAN aceptar el formato predeterminado como entrada también cuando sea posible, por ejemplo, las implementaciones DEBERÍAN aceptar números que cumplan con los requisitos locales de "C" (así como los locales actuales), y DEBERÍAN aceptar direcciones de celdas entre corchetes. Además, las interfaces de usuario de implementación DEBEN corregir los posibles errores, posiblemente con un diálogo. Por ejemplo,
El siguiente es un ejemplo de una fórmula simple:
=sum(A1:A5)
Esta fórmula calcula la suma de los valores de todas las celdas en el rango ".A1: .A5". La función es "suma". Los parámetros están marcados con un "(" al principio y un ")" al final. Si una función contiene más de un parámetro, los parámetros están separados por un ";". La siguiente es una variación de la fórmula que se muestra arriba:
=sum(A1;A2;A3;A4;A5)
El resultado de esta fórmula es el mismo. Los componentes que usa en la fórmula dependen de la aplicación que esté usando.