3 votes

Excel en cellule Fonction VALUE pour les formules

J'ai une feuille Excel que je dois faire fonctionner sur Android. Seul problème, j'ai utilisé VBA pour la fonction Evaluate et VBA ne fonctionne pas sur les applications Android. Je cherchais une alternative et je suis tombé sur la fonction "VALUE()", j'ai vu qu'une cellule avec :

=VALUE(10 + 5 * 3)

renvoie le résultat correct (25). Maintenant, ce que je voudrais faire est :

=VALUE(A2)

Où A2 est un texte contenant "10 + 5 * 3". Mais cela renvoie "#VALEUR !"

Existe-t-il une astuce permettant d'utiliser VALUE() pour évaluer des formules simples ?

Merci !

3voto

Sean Copenhaver Points 2070

Il existe un hack qui existe depuis des années et qui permet de faire cela dans la version complète d'Excel. Je doute que cela fonctionne sur Android, mais cela peut valoir la peine d'essayer.

J'utilise Excel 2013.

Allez dans le ruban FORMULES et choisissez Définir le nom.

Donnez un nom quelconque, par exemple myResult

Dans la partie "Se réfère à :", mettez la formule =EVALUATE(A2)

Maintenant, mettez la formule =myResult dans votre feuille à l'endroit où vous voulez que la réponse apparaisse.

1voto

DraxDomax Points 153

Utilisez INDIRECT().

Exemple (de Fonction INDIRECT de Microsoft Office ):

Data B2 1.333 B3 45 George 10 5 62

Formula Description Result '=INDIRECT(A2) Value of the reference in cell A2. The reference is to 1.333 cell B2, which contains the value 1.333.
'=INDIRECT(A3) Value of the reference in cell A3. The reference is to 45 cell B3, which contains the value 45. '=INDIRECT(A4) Because cell B4 has the defined name "George," the reference to 10 that defined name is to cell B4, which contains the value 10 '=INDIRECT("B"&A5) Combines "B" with the value in A5, which is 5. This, in turn, 62 refers to cell B5, which contains the value 62.

S'applique à : Excel 2016, Excel 2010, Excel Starter, Excel 2013, Excel Online, Excel 2016 pour Mac, Excel pour Mac 2011, Excel 2007

-1voto

Jeorje Points 9

Il existe un "truc" pour y parvenir.

Je suppose que vous voulez dire que vous aimeriez évaluer une formule simple comme celle utilisée dans vos VALUE() formule : 10 + 5 * 3 plutôt qu'une version littéralement entourée de guillemets. Mais même si vous n'utilisiez pas la convention habituelle pour montrer l'élément intéressant à l'intérieur des guillemets et que vous vouliez vraiment présenter la chaîne à évaluer dans la cellule avec les guillemets, eh bien, cela peut être fait aussi.

Et TRES simplement.

Pour faire ce que je crois que vous souhaitez faire : disons que la cellule A1 a le contenu : 10 + 5 * 3 . Vous considérez l'endroit où vous voulez que votre sortie se situe par rapport à la cellule A1 et vous sélectionnez la cellule souhaitée. Ainsi, si vous souhaitez que le résultat se trouve dans la cellule C1, sélectionnez C1. Pendant que vous êtes ainsi sélectionné, créez une plage nommée, peut-être appelée TextCalculate, et donnez-lui la formule suivante pour son résultat Refers to valeur :

=EVALUATE(A1)

Fermez-la et entrez dans la cellule C1 :

=TextCalculate

et il évaluera ce qui se trouve dans A1 comme vous le souhaitez (SI c'est possible : il faut que ce soit quelque chose qu'Excel puisse comprendre !) et affichera le résultat dans la cellule C1.

Si vous voulez vraiment avoir des guillemets autour de l'entrée, il suffit de configurer une autre plage nommée pour ce type de données d'entrée et de lui donner la valeur de :

=EVALUATE(EVALUATE(A1))

Le premier EVALUATE() enlève les guillemets, puis la seconde évalue la chaîne restante.

Remarquez que j'ai dit de mettre la fonction DANS UNE GAMME NOMMÉE plutôt que de dire de le mettre directement dans une cellule. Si vous essayez et que cela ne fonctionne pas, c'est que vous avez probablement essayé de le faire dans une cellule. Faites-le DANS UNE GAMME NOMMÉE et cela fonctionnera.

Pourquoi cela ? Eh bien, c'est intéressant, même si je pense que d'après votre question, vous savez déjà pourquoi... mais d'autres lecteurs ne le savent peut-être pas (d'où ce qui suit et les avertissements sûrement inutiles pour vous de ne l'essayer que dans des plages nommées). La fonction provient d'un ensemble de commandes qu'Excel utilisait pour créer des macros avant la mise en œuvre de VBA. Elle est conçue pour être utilisée dans les macros construites à l'aide des anciens outils et le seul endroit dans Excel lui-même où elles fonctionnent encore est dans la fonctionnalité des plages nommées. Notez qu'elles n'ont jamais fonctionné en dehors des macros et qu'elles ne fonctionnent pas aujourd'hui non plus, sauf à l'intérieur d'une plage nommée.

Tant que la version Android peut utiliser des plages nommées, cela peut fonctionner. Honnêtement, je ne peux pas le vérifier et je pense que ce n'est pas le cas, car ma meilleure supposition est que la version Android est une réécriture, et non un portage, et qu'ils pourraient avoir abandonné cet aspect d'Excel, en particulier parce que c'était pour les macros et qu'Android ne les prend pas en charge. Cependant, comme il ne fait pas partie de VBA lui-même, mais qu'il lui est simplement accessible, il se peut qu'ils aient porté le logiciel et qu'il soit arrivé avec eux, bien qu'ils n'aient pas intégré d'interface avec VBA (ni, je le suppose, avec quoi que ce soit d'autre). Essayez donc EVALUATE() dans une plage nommée dans Android Excel et voyez. Il se peut en effet qu'il n'ait pas été apporté, mais là encore, il aurait pu l'être. Pas en tant qu'outil pour VBA, évidemment, mais peut-être quand même disponible pour les Named Ranges.

Il faut tester quelque chose avant d'arrêter... dommage... les noms utilisés dans LET() ressemblent beaucoup à des plages nommées "étendues" à la formule individuelle (elles semblent l'être en général et remplaceront une plage nommée réellement définie, donc...), et je me suis demandé si cela fonctionnerait dans la formule pour un nom utilisé dans LET() . Hélas, ce n'est pas le cas... Il doit y avoir plus (ou moins) de choses.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X