Vous recherchez une formule «isFormula» pour les feuilles de calcul Google

13

Existe-t-il une fonction qui dira si une cellule spécifique a une valeur simple (saisie manuellement) ou a une formule?

epeleg
la source

Réponses:

5

Avec ce petit extrait, vous pouvez le faire.

Code

function isFormula(startcol, startrow) {
  // prepare string
  var str = String.fromCharCode(64 + startcol) + startrow;

  // retrieve formula
  var fCell = SpreadsheetApp.getActiveSpreadsheet()
    .getRange(str).getFormula();

  // return false if empty else true 
  return fCell ? true : false;
}

Usage

entrez la description de l'image ici

Dans cette réponse , Tom Horwood a trouvé un moyen de contourner l'utilisation des citations.

Exemple

Ajoutez le script sous Outils> Editeur de script et appuyez sur le bouton de bogue pour activer l'authentification.

J'ai créé un exemple de fichier pour vous: vérifier la formule

Jacob Jan Tuinstra
la source
Je me promenais ... Votre fonction obtient en fait une chaîne qui est l'adresse d'une cellule isFormula2("A1"). J'ai donc essayé d'en créer une nouvelle version comme ceci: function isFormula2(cell) { return (cell.getFormula())!=""; } et je m'attendais à ce qu'il soit appelable en utilisant isFormula2(A1)mais cela ne semble pas fonctionner et lorsque j'essaie de le déboguer, il apparaît cellcomme indéfini ... toute idée pourquoi est-ce et si les choses pourraient être changé de sorte qu'il fonctionnera avec f(A1)au lieu de f("A1")?
epeleg
@epeleg Voir ma réponse révisée.
Jacob Jan Tuinstra
:) donc vous l'avez modifié pour qu'au lieu d'obtenir l'adresse, il obtienne maintenant une colonne et une ligne. n'y a-t-il pas ici de syntaxe telle que l'appel serait juste isFormula(a1)? (dans MS Excel, ce serait une fonction qui obtient un paramètre de plage)
epeleg
@epeleg Le plus proche est isFormula_1 ("A2: A2") , regardez mon exemple de fichier. Les fonctions personnalisées fonctionnent de cette façon. Sans les guillemets, vous obtiendrez la valeur. Avec des guillemets, la chaîne peut être utilisée comme telle, mais ne peut pas être copiée / collée. La solution COLUMN and ROW est juste un travail en rond (inévitablement).
Jacob Jan Tuinstra
quelle serait la valeur qu'une fonction personnalisée obtiendrait si vous l'appeliez avec isFormula (a1: a1)? et qu'en est-il d'isFormula (a1: b2)?
epeleg
9

Réponse courte

Utilisez la fonction intégrée ISFORMULA () .

Contexte et explication

Je pense que je viens de découvrir une formule non documentée dans les nouvelles feuilles de calcul Google. @Pnuts disait que la CELLformule ne fonctionnait pas (en partie parce qu'elle n'est disponible que dans les nouvelles feuilles de calcul Google), j'ai donc copié le code dans une nouvelle feuille de calcul Google. Une erreur s'est produite, me disant que ma formule (personnalisée) n'accepte qu'un seul argument et non deux:
entrez la description de l'image ici

Renommer le isFormulaen quelque chose d'autre, a abouti à une fonction personnalisée de travail. Après cela, j'ai créé une autre feuille de calcul Google et utilisé la isFormulaformule. La formule n'apparaît pas dans la saisie semi-automatique, mais elle fonctionne:
entrez la description de l'image ici

Donc, si la formule est disponible dans les nouvelles feuilles de calcul Google, ce serait la meilleure réponse:

Formule

=isFormula(A1)

Remarque

Disponible uniquement dans les nouvelles feuilles de calcul Google. J'ai demandé à quelques autres personnes de confirmer la nouvelle formule et c'est confirmé. Comme il n'est pas documenté, son implémentation n'est pas sûre et il pourrait disparaître. Le ARRAYFORMULAne fonctionne pas lorsqu'il est utilisé avec cette nouvelle formule.

Exemple

J'ai créé un exemple de fichier pour vous: isFormula

Jacob Jan Tuinstra
la source
agréable. on dirait que Google adopte ma recommandation :) Mais comment passer aux "Nouvelles feuilles Google"?
epeleg
intéressant. cela fonctionne pour mon compte gmail mais pas dans mon compte Google Apps ...
epeleg
2
ISFORMULA () est maintenant documenté. Voir support.google.com/docs/answer/6270316?hl=en
Rubén
2

Il semble qu'il existe une fonction intégrée cachée ISFORMULA()de Google. J'ai réalisé quand j'ai supprimé ma propre fonction et que je travaillais toujours. Je l'ai essayé dans une nouvelle feuille de calcul et fonctionne toujours. Aucun problème de cache.

Juan Pérez
la source