web-dev-qa-db-fra.com

Documentation de référence complète pour les formules Google Spreadsheets?

En tant que programmeur, je suis quelque peu frustré lorsque j'essaie d'utiliser Google Spreadsheets, car il ne semble pas y avoir de description définitive de la syntaxe que je peux utiliser pour les formules. Par exemple, j'ai lu que je pouvais utiliser F3:F pour faire référence à la colonne F à partir de la ligne 3, mais je ne trouve pas où cela est mentionné dans la documentation de référence de Google. semble pas toujours travailler. Je me trompe probablement, mais c'est le but de cette question.

Je ne veux pas parcourir cinq tutoriels différents pour essayer de deviner les règles! Existe-t-il une description concise de la grammaire et de la sémantique disponibles quelque part? Sinon, peut-être que quelqu'un pourrait le résumer ici.

21
rog

Ceci est un extrait du texte de ici . Je l'ai posté ici en tant qu'homme de paille. Si quelqu'un qui sait en quoi cela diffère des formules de Google Spreadsheets peut faire un commentaire, nous pourrons peut-être obtenir une bonne réponse.

Formules

Les formules vous permettent d'effectuer des calculs dans les cellules du tableau. Chaque formule PEUT commencer par un préfixe d'espace de nom spécifiant la syntaxe et la sémantique utilisées dans la formule. Lorsqu'il n'y a pas de préfixe, la syntaxe de formule par défaut et la sémantique décrites ci-dessous sont utilisées. Ceci est suivi d'un signe égal et ensuite de la formule elle-même. Les implémentations PEUVENT accepter plusieurs syntaxes de formule et PEUVENT accepter diverses extensions de la syntaxe de formule par défaut. Cependant, toutes les implémentations qui acceptent des formules DOIVENT accepter la syntaxe et la sémantique de formule par défaut, comme décrit ici. Ils PEUVENT aussi accepter des extensions.

Un document mettant en œuvre le schéma strict NE PEUT PAS utiliser un préfixe d'espace de nom de formule (car rien ne garantit que d'autres systèmes récepteurs pourront le traiter), et NE PEUT utiliser aucune extension à la sémantique et à la syntaxe décrites ci-dessous.: Dans la formule par défaut syntaxe, après le signe égal initial, une formule doit être une expression. Une expression peut être un nombre, une chaîne constante, une plage nommée, une paire d’expressions reliées par un opérateur binaire, une expression préfixée par un opérateur unaire, un opérateur logique, un appel de fonction, une adresse de cellule ou une expression entourée par parenthèses. Un appel de fonction et un opérateur logique peuvent avoir zéro paramètre ou plus, séparés par des points-virgules, et chaque paramètre DOIT être une expression. La syntaxe de chacun de ces éléments est la suivante:

  • Nombres . Les nombres sont écrits et lus dans ce format en utilisant les paramètres régionaux "C" (en utilisant le séparateur décimal "." Et aucun séparateur de milliers), en utilisant setlocale (LC_NUMERIC, "C") ou un équivalent. Les nombres peuvent se terminer par%, ce qui divise ce nombre par 100. Le "%" ne modifie pas la signification des autres opérateurs, donc 2 + 10% est égal à 2.1 (pas 2.2). Notez que les signes - et + sont autorisés en tant qu'opérateurs unaires, décrits ci-dessous. Les auteurs DOIVENT écrire les nombres correspondant au modèle (notez qu'il doit commencer par un chiffre): [0-9] + (. [0-9] +)? ([EE] [+ -]? [0-9] + )?%? Les lecteurs DOIVENT être capables de lire ces chiffres, ainsi que d’accepter les numéros commençant par un ".", Ainsi ils doivent pouvoir lire les chiffres sous la forme: ((. [0-9] +) | ([0- 9] + (. [0-9] +)? ([EE] [+ -]? [0-9] +)?))%? Chaînes constantes .. Les chaînes constantes sont entourées de guillemets doubles; pour incorporer une citation double, le caractère citation double est utilisé deux fois. Les chaînes sont stockées au format UTF-8. Notez que, puisque tout le contenu est stocké au format XML, toutes les guillemets doubles de la formule sont en réalité stockés au format "XML". Les chaînes constantes correspondent au modèle suivant:\"([^"] |\"\") *\"

  • Plages/champs nommés. Les plages/champs nommés font référence à une valeur définie séparée ou à un ensemble de valeurs (dans une feuille de calcul, faisant généralement référence à une adresse ou à un ensemble de cellule. des adresses). Les noms ne sont pas sensibles à la casse, donc “a” et “A” se réfèrent à la même plage. Les implémentations doivent accepter au moins des plages nommées qui correspondent au modèle suivant: [A-Za-z] [A-Za-z0-9 _] *

  • Opérateurs. Les opérateurs infixes et préfixes ordinaires sont acceptés. Celles-ci ont l'associativité et la priorité suivantes (de la priorité la plus basse à la plus haute):

 Associativité Opérateur (s) Commentaires 
 Left <, =,>, <=,> =, <> Inférieur à, égal à, supérieur à, 
 Inférieur ou égal à , supérieur ou égal à, 
 différent de. 
 left +, -, & Ajouter, soustraire, concaténation de chaînes. Notez que 
 Unaire (préfixe) + et - a une priorité différente. 
 Left *,/Multiply, divide. La division ne tronque pas, donc 
 1/2 est égal à 0,5 
 Right ^ Power (2 ^ 3 vaut 8). Les lecteurs DEVRAIENT également accepter “**”. 
 Aucun +, - Opérateurs unaires préfixés, par exemple, -5 ou - [. A1]. 
 Notez qu'ils ont une priorité plus grande que 
 additionner et soustraire. 

La priorité peut être remplacée en utilisant des parenthèses, ainsi "= 2 + 3 * 4" en calcule 14 tandis que "= (2 + 3) * 4" en calcule 20. Notez que +, -, *, /, ^ convertit toute chaîne ou valeur binaire ils utilisent des nombres avant de calculer; notez que & (concaténation de chaînes) convertit toutes les valeurs en chaînes avant de les concaténer. Opérateurs logiques. Les opérateurs logiques ont la même syntaxe que les appels de fonction; leurs noms ne sont pas sensibles à la casse, les paramètres sont séparés par des points-virgules et leur nom DOIT être suivi de parenthèses. Les opérateurs logiques sont:

 Opérateur Nombre de paramètres Commentaire 
 VRAI () 0 Il s'agit d'une constante booléenne, bien que sa syntaxe la fasse apparaître comme une fonction 
 FALSE () 0 Il s'agit d'une constante booléenne 
 NOT (expression) 1 Si expression est TRUE () renvoie FALSE (), sinon renvoie TRUE () 
 AND (e1; e2 [; e] *) 2 ou plus Si toutes les expressions sont VRAIE () renvoie VRAI (), sinon renvoie FAUX () 
 OU (e1; e2 [; e] *) 2 ou plus Si toutes les expressions sont FAUX () renvoie FAUX (), sinon renvoie VRAI () 
 IF (condition; true_exp; false_exp) 
 3 Évalue la condition. Si c'est vrai, retourne true_exp, sinon false_exp 

Les implémentations de AND (), OR () et IF () doivent court-circuiter, c'est-à-dire qu'elles doivent évaluer tour à tour la gauche à droite et n'évaluer que les expressions qu'elles doivent évaluer pour calculer le résultat. Une implémentation peut choisir d’évaluer davantage, mais uniquement lorsque les expressions n’ont aucun effet secondaire. Les implémentations de AND () et OR () DEVRAIENT accepter un nombre arbitraire de paramètres, mais DOIVENT en accepter au moins 30 à chaque utilisation. Les opérations NOT (), AND () et OR (), ainsi que la condition dans IF (), sont destinées aux valeurs booléennes; si des expressions d'autres types sont utilisées, une implémentation NE DEVRAIT PAS considérer 0 comme fausse et toute autre valeur numérique comme étant vraie, et NE DEVRAIT PAS considérer une chaîne de longueur nulle comme étant fausse et toute autre valeur de chaîne comme étant vraie. Si une valeur d'erreur est calculée pour une expression, cette première erreur est le résultat de l'opération logique.

Appels de fonction. Un appel de fonction a un nom de fonction correspondant au modèle [A-za-z] [A-Za-z0-9 _] * suivi de une parenthèse ouvrante, zéro paramètre ou plus, et une parenthèse fermante. Les paramètres sont séparés par un point-virgule (pas une virgule), bien que les lecteurs PEUVENT facultativement accepter les appels de fonction utilisant également des virgules comme séparateurs. Les noms de fonction ne sont pas sensibles à la casse, donc "somme" et "somme" sont la même fonction. S'il y a des paramètres, chacun doit être une expression et aucun ne peut être vide. X (;) n'est donc pas un appel de fonction légal, alors que Rand () est parfaitement légal. Si un paramètre est facultatif, il PEUT être omis, mais s'il est omis, son séparateur DOIT également être omis (les spécifications de la fonction devraient indiquer quels paramètres sont facultatifs et ce que leur omission signifie). Les implémentations classiques comportent de nombreuses fonctions intégrées. La plupart des implémentations prennent également en charge un ou plusieurs moyens de créer des fonctions définies par l'utilisateur. Les fonctions communes incluent:

  • SUM ( list ) - résume tous les nombres dans la ou les plages de list .
  • COUNT ( list ) - compte le nombre de nombres dans la ou les plages de list
  • AVERAGE ( list ) - Calcule la moyenne, égale à SUM ( list )/COUNT () )
  • MIN ( list ) - valeur numérique minimale de list
  • MAX ( list ) - valeur maximale de list
  • ROUND ( n , nombre ) - arrondi n à compte chiffres (si compte omis, compte = 0)
  • INT ( n ) - arrondissez n au nombre entier le plus proche.
  • ISEVEN ( n ) - renvoie VRAI () si n est pair, sinon renvoie FAUX ().
  • SUBSTITUT ( text ; texte recherché ; newtext ; occurrence ) - substitue newtext par texte recherché dans texte , occurrence nombre de fois (si occurrence omis, tous les temps).

Adresses des cellules contenant des nombres . Les adresses peuvent être relatives ou absolues. Une adresse relative consiste en une lettre de colonne et un numéro de ligne. Le préfixage de la lettre de ligne ou du numéro de colonne avec un $ rend la ligne ou la colonne absolue.

Les espaces (espaces, tabulations, retours à la ligne et retours à la ligne) sont ignorés dans la syntaxe de formule par défaut, à l'exception du contenu des constantes de chaîne et en tant que séparateur d'adresses de plage de cellules multiples dans une liste d'adresses de plage de cellules.

Les interfaces utilisateur des implémentations PEUVENT choisir d'accepter et d'afficher les formules différemment de la manière dont elles sont échangées dans ce format de données. Par exemple, ils PEUVENT accepter et afficher les nombres en utilisant le format de la locale actuelle, ils PEUVENT toujours utiliser une locale particulière pour les formats numériques, ils PEUVENT utiliser des virgules au lieu de points-virgules pour les séparateurs de paramètres, et PEUVENT accepter et afficher les adresses de cellule sans exiger la utilisation des crochets. Mais les interfaces utilisateur de mise en œuvre DEVRAIENT accepter le format par défaut comme entrée aussi bien que possible. Par exemple, les implémentations DEVRAIENT accepter les nombres qui répondent aux exigences de la localisation "C" (ainsi que la localisation actuelle) et DEVRAIENT accepter les adresses de cellules entre crochets. En outre, les interfaces utilisateur de la mise en œuvre DEVRAIENT corriger les erreurs possibles, éventuellement avec un dialogue. Par exemple, si une implémentation affiche normalement des séparateurs de paramètres sous forme de point-virgule, une implémentation DEVRAIT essayer de détecter si un utilisateur utilise des virgules comme séparateurs de paramètres de fonction au lieu de points-virgules, et le corriger.

Voici un exemple de formule simple:

=sum(A1:A5)

Cette formule calcule la somme des valeurs de toutes les cellules de la plage ".A1: .A5". La fonction est "somme". Les paramètres sont marqués par un “(“ au début et un “)” à la fin. Si une fonction contient plusieurs paramètres, ceux-ci sont séparés par un “;”. Voici une variante de la formule ci-dessus:

=sum(A1;A2;A3;A4;A5)

Le résultat de cette formule est le même. Les composants que vous utilisez dans la formule dépendent de l'application que vous utilisez.

11
rog

Après avoir cherché un peu plus, je trouve que

  1. Les formules de tableur Google implémentent de facto standard , selon Microsoft Excel et autres.
  2. La norme semble avoir n'a jamais été définie correctement .

La définition la plus proche d’une définition complète se trouvait dans cet ancien message de la liste de diffusion: http://lists.oasis-open.org/archives/office-comment/200411/msg00000.html , qui contient un yacc, un tokenizer Lex et une brève description de la sémantique.

Il est difficile de savoir dans quelle mesure cela correspond à la mise en œuvre de Google Spreadsheet - plusieurs exemples ne fonctionnent pas dans Google Spreadsheets.

Cela semble désolant. Toute avance sur cette information serait très appréciée.

6
rog