J'essaie de créer une formule dans une feuille de calcul Google qui ressemble à ceci:
if (x < 0, x + 1, x)
Cela signifie que si x
est plus petit que 0
, return x + 1
, else return x
.
Cependant, x
lui-même est une expression, par exemple A1 + B1
. Je me suis donc retrouvé avec:
if ((A1 + B1) < 0, (A1 + B1) + 1, (A1 + B1))
Comment puis-je enregistrer l'expression (A1 + B1)
dans une variable temporaire x
pour pouvoir le faire? :
x = (A1 + B1);
if (x < 0, x + 1, x);
L'expression actuelle dans ma feuille de calcul ressemble à ceci:
if(
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
< 0,
1 +
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
,
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
)
J'essaie de le faire paraître plus court et plus facile à gérer comme ceci:
x = timevalue(Sheet1!$D10) - timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))));
if(
x
< 0,
1 +
x
,
x
)
google-sheets
google-apps-script
Pacerier
la source
la source
Réponses:
Je finis souvent par utiliser des cellules comme variables pour des calculs souvent utilisés, et en fait je les nomme en utilisant des "plages nommées". Cela facilite la réflexion sur la formule que vous essayez de développer. Vous pouvez masquer ces cellules si vous ne voulez pas qu'elles soient vues.
la source
Réponse courte
À l'heure actuelle, Google Sheets n'a pas de fonctionnalité pour attribuer un nom à une variable définie par une formule au lieu d'une référence de cellule ou de plage. Pour utiliser une formule avec ces types de variables, l'alternative consiste à utiliser des fonctions personnalisées.
Fonctions personnalisées dans Google Sheets
Les fonctions personnalisées sont définies dans les projets liés aux scripts Google Apps ou les modules complémentaires Google Sheets. Ils ne peuvent être utilisés que pour renvoyer des valeurs, et non pour automatiser des tâches telles que l'envoi d'un e-mail.
Une fonction personnalisée est comme une fonction JavaScript et pourrait utiliser JSDOC pour ajouter des fonctions intégrées telles que la saisie semi-automatique et pour afficher l'aide de formule contextuelle. Un message d'erreur personnalisé peut également être inclus.
Dans le cas présenté dans la question, la structure souhaitée de la formule à afficher dans une cellule doit avoir la structure suivante
où
x
pourrait être une fonction personnalisée.Voici un exemple simple d'une fonction personnalisée qui utilise JSDOC .
La formule utilisant la fonction personnalisée ci-dessus avec la structure spécifiée dans la question se présentera de la manière suivante
row()
pourrait être utilisé à la place d'une constante pour avoir en entrée la ligne où la formule est placée.Pour «émuler» la formule explicite présentée dans la question, les formules intégrées doivent être remplacées par des fonctions de script JavasScript / Google Apps.
Les références
la source
Je fais quelques tentatives (je conviens que ce serait une fonctionnalité très utile, en particulier pour les formules longues. Voici ce que j'ai écrit jusqu'à présent:
Théoriquement, cela serait utile pour simplifier une formule cellulaire complexe telle que:
en cela:
Supplémentaire
D_VAR#'s
etVAR#'s
pourrait être écrit dans le script pour permettre plusieurs déclarations et appels de variables selon les besoins.Cependant, il semble que
D_VAR0
ne stocke pas correctement la variable encapsulée dans le tableau de variables [].Si j'entre manuellement un élément dans le tableau, VAR0 peut y accéder et le retourner dans la cellule active. Par exemple:
Cela me laisse avec deux questions. Si les éléments suivants sont possibles, je pense qu'il est possible de déclarer et d'appeler des variables temporaires via une fonction personnalisée:
Si les fonctions personnalisées peuvent accéder aux éléments du tableau, peuvent-elles également stocker des éléments dans un tableau? Si c'est le cas, comment?
Si les fonctions personnalisées peuvent stocker des éléments dans un tableau, sont-elles uniquement accessibles dans la même formule contiguë dans la même cellule? Ou est-il possible d'accéder à cette même variable stockée dans une cellule différente? Exemple:
Cell A1 = D_VAR0(sum(3,5))
Cell D4 = VAR0() //would this return 8 in cell D4? It hasn't worked in my testing.
la source