J'ajouterais probablement 4 colonnes, ce qui faciliterait la résolution des problèmes et les conversions mathématiques plus tard.
- Chaîne à analyser
- Compter
- Taille
- Unité de mesure (To ou Go)
le "Chaîne à analyser" est la section pertinente de la note à partir de laquelle nous devons calculer. Les expressions régulières peuvent vous aider ici.
Ajoutez une fonction définie par l'utilisateur pour les expressions régulières, comme indiqué ici: https://stackoverflow.com/questions/9744602/how-do-you-execute-a-regular-expression-in-excel
Je pense que le regex que vous voulez est:
"[0-9 x]*[GT]B"
qui retournera comme suit étant donné ces chaînes (après avoir supprimé tous les espaces):
BOB HAS 400 x 10 gB --> "400x10gB"
4x10TB IN THE building xx --> "4x10TB"
I have 20TB of space --> "20TB"
Alors, pour avoir ceci "Chaîne à analyser" , disons que vous mettez ceci en B2 avec une cellule cible A2:
=SUBSTITUTE(udfRegEx(A2,"[0-9 x]*[GT]B")," ","")
Compter peut être extrait avec (notez que cela donne 1, quand aucun multiple n'est fourni):
=IF(ISERROR(FIND("x",B2)),1,VALUE(LEFT(B2,FIND("x",B2)-1)))
Taille peut être extrait avec:
=IF(ISERROR(FIND("x",B2)),VALUE(LEFT(B2,LEN(B2)-2)),VALUE(MID(B2,FIND("x",B2)+1,LEN(B2)-2-FIND("x",B2))))
Unité de mesure (TB ou GB) avec:
=UPPER(RIGHT(B2,2))
Count et Size sont tous deux retournés sous forme de nombres, vous devriez donc pouvoir les multiplier et les ajouter à partir de là ...
Notez qu'une seule fonction VBA aurait pu faire tout cela et dissimuler une grande partie de la complexité, mais je pense qu'il est préférable de laisser les fonctions VBA aussi génériques que possible et de faire le reste dans Excel si cela est raisonnable.