web-dev-qa-db-fra.com

Comment résumer une ligne de nombres après avoir extrait des nombres avec REGEX?

J'ai des colonnes de données qui sont de la forme:

A1: "IDjohn / 35.00 / california"
A2: "IDmike / 25.00 / oregon"
A3: "IDrebecca / 40.00 / ohio"
B1: "IDchang / 20.00 / washington"
B2: "IDwill / 25.00 / delaware"

Chaque cellule est assez dense avec des informations. J'essaie de trouver une formule qui résumerait une colonne entière après l'extraction du nombre entre les barres obliques. Donc, la somme de la colonne A donnerait 100,00 et la somme de la colonne B, 45,00.

Une telle chose est possible? Ou dois-je retravailler le format de données en un format plus analysable?

5
Quells T

Je voudrais utiliser regexextract comme

=arrayformula(sum(0+iferror(regexextract(A1:A3, "[\d\.]+"))))

Ici, l'expression régulière saisit le premier groupe de caractères composé des chiffres 0 à 9 éventuellement avec le point. Le wrapper iferror est nécessaire en l'absence d'un tel groupe (peut-être que la cellule est vide), car regexextract a l'habitude ennuyeuse de montrer # N/A au lieu de simplement donner une chaîne vide. Ajouter 0 force Sheets à traiter le résultat sous forme de nombre. Et ils se sont ajoutés.

Une alternative légèrement plus courte est regexreplace:

=arrayformula(sum(0+regexreplace(A1:A3, "[^\d\.]", "")))

Ici, regexreplace supprime tout ce qui est pas un chiffre ou une période. Un avantage est qu’il ne peut y avoir d’erreur. Un inconvénient est qu'il y a plus de chance d'obtenir des résultats erronés si, par exemple, la troisième colonne contient des chiffres compris entre 0 et 9. Ces chiffres seront ajoutés au nombre que vous voulez.

6
user135384

Je me débattais aussi avec ça. J'avais des textes comme

A1: 3 Test 1 something
B1: 1.5 Something else here, which does not matter
C1: 3

La formule ci-dessus a presque fonctionné, sauf que lorsqu'il n'y avait que des chiffres dans la cellule, cela n'a pas fonctionné. Une légère modification consisterait à utiliser la fonction TO_TEXT. Donc, quelque chose comme ça:

=arrayformula(sum(0+iferror(regexextract(to_text(A1:C1), "[\d\.]+"))))

Je ne veux pas dire que la réponse de @ user135384 n'est pas correcte. Le nombre ne faisait pas partie de la question non plus. Mais si vous rencontrez ce problème, la fonction to_text ci-dessus vous aidera. Merci @ user135384 pour votre réponse.

0
Yogeshwer Sharma