Comment analyser un entier dans une feuille Google?

16

Quel est l'équivalent de parseInt()(JS) ou intval()(PHP) dans Google Sheets?

Je veux calculer la somme des nombres dans une ligne dans une cellule séparée. Donc, si je l'avais 3 cupset 5 cupsdans une rangée, j'aurais 18.

FT
la source
4
Voulez-vous dire "3 tasses" et "15 tasses", ou est-ce que je manque quelque chose?
jonsca

Réponses:

15

Une façon de mettre en œuvre quelque chose comme ça est

=VALUE(INDEX(FILTER(SPLIT(A1, " "), ISNUMBER(SPLIT(A1, " "))); 1; 1))

Le résultat de cette formule pour certains exemples de chaînes est donné ci-dessous.

entrez la description de l'image ici

Vous devrez peut-être le modifier en fonction de vos besoins individuels. Cela devrait fonctionner assez bien pour des cordes aussi simples que "3 tasses".

  • SPLIT(..., " ")divise une chaîne en ses parties séparées par des espaces. Vous pouvez ajouter plus de caractères à la chaîne, par exemple " -/", pour diviser chaque fois que ces caractères sont trouvés.

  • ISNUMBER vérifie si une chaîne est un nombre.

  • FILTER prend le tableau et filtre tout ce qui ne satisfait pas la deuxième fonction, c'est-à-dire qu'il supprime tout ce qui n'est pas un nombre.

  • INDEX(...; 1; 1) renvoie la valeur dans la première ligne, la première colonne du tableau (donc nous n'obtenons que le premier nombre répertorié, pas tous les nombres répertoriés).

  • VALUE ne sera probablement pas nécessaire, mais juste pour faire bonne mesure, il convertit la chaîne finale en une valeur numérique.

6005
la source
2
Donc la réponse est VALUE...
Iulian Onofrei
@IulianOnofrei Non, VALUEdéclenche une erreur ("ne peut pas être analysé en nombre") sur toutes les entrées d'exemple que j'ai données dans la réponse.
6005
1
Désolé, je voulais dire que VALUEc'est la réponse à la première question de OP et le titre aussi.
Iulian Onofrei
@IulianOnofrei Je ne connais pas JavaScript mais ce n'est pas ainsi que j'ai compris la question du PO.
6005
3

Une autre alternative qui fonctionne avec une cellule contenant une tasse ou des tasses

= ArrayFormula (SUM (INT (LEFT (B1: B2, FIND ("", B1: B2)))))))
Rubén
la source
1

Semble une bonne utilisation pour regex. Par exemple:

Exemple WA57716

où la formule dans E2 est:

="="&join("+",ArrayFormula(regexreplace(B2:D2,"\D","")))

Cela supprime tous les non numériques, concatène le résultat avec +et ajoute =.

Copiez / collez / collez uniquement les valeurs dans, disons, F2 (pourrait être E2), puis remplacez =par =.

REJOIGNEZ
REGEXREPLACE

pnuts
la source