1 votes

Somme complexe des valeurs dans une cellule

Disons que j'ai une formule qui renvoie ceci +10+5+1+40 en tant que texte. Je veux ensuite additionner ces chiffres pour obtenir le total.

Le résultat peut être un nombre quelconque de valeurs, comme par exemple +2+5 o +10+5+7+1+8 .

Au cas où cela serait utile, l'ensemble de données original ressemble à ceci S10_S5_S1_S40 ou ceci E_E_S2_S5 . J'ai tout enlevé sauf les chiffres à côté de S, qui sont ce que je veux ajouter.

Enfin, je poste sur superutilisateur car je veux éviter VBA si possible.

Mise à jour

T =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D25,"E",""),"_",""),"S","=",1),"S","+")

Je l'ai réduit à ceci =10+5+1+40 où D25 = S10_S5_S1_S40 ... mais cela revient en fait à avoir une + devant, je suppose !

3voto

databyte Points 708

Il n'y a pas de formule de feuille de calcul qui permette de faire cela. Vous pouvez utiliser l'ancienne fonction macro Excel 4 EVALUATE(), mais elle ne peut être utilisée que dans une plage nommée.

Ainsi, si vous avez des données dans la colonne D, et que vous avez la formule de substitution dans la colonne E, par exemple, sélectionnez F25 et créez une nouvelle formule nommée avec le Gestionnaire de noms. Donnez-lui le nom "EvaluateMe" et faites-lui référence à

=EVALUATE(Sheet1!E25)

Ensuite, entrez

=EvaluateMe 

dans la cellule F25 et le résultat s'affiche. Cette plage nommée utilise une référence relative, et si la cellule active se trouvait dans la cellule F25 lorsque vous l'avez définie, elle essaiera toujours d'évaluer la cellule directement à gauche.

2voto

barry houdini Points 10704

En supposant que vous n'ayez que des numéros à 1 ou 2 chiffres comme dans vos exemples, cette "formule de tableau" fera la somme de tous les numéros "S" de D25.

=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",(0&SUBSTITUTE(MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,2),"_",""))+0))

confirmé avec CTRL+SHIFT+ENTER

donc si D25 contient S10_S5_S1_S40 qui vous donnera le résultat 56

0voto

Scott Points 20468

Cela découle de la réponse "géniale" de Barry. La "formule du tableau" suivante

=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,IFERROR(FIND("_",D25,ROW(INDIRECT("1:"&LEN(D25)))+1),LEN(D25)+1)-(ROW(INDIRECT("1:"&LEN(D25)))+1))+0))

(entrée avec Ctrl + Shift + Enter ) ajoutera tous les numéros 'S' de la cellule D25 quelle que soit la longueur ; ainsi, si D25 contient "S10_S5_S1_S240", la formule ci-dessus vous donnera le résultat 256. Cette formule permet également de traiter les nombres négatifs : "S10_S5_S-1_S240" donnera 254.

Je n'ai pas testé cela de manière exhaustive. Je trouverai probablement quelque chose qui ne va pas lundi matin, moi-même :)

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