Extraire des données et calculer

0

J'ai environ 900 lignes dans Excel et ai besoin d'analyser et de calculer des informations spécifiques de chaque ligne dans une autre ligne.

Un exemple de ligne est:

Le système xyz a 4 x 10 To de données attribuées au client.

Je dois pouvoir trouver le 4 x 10 To et le calculer pour être 40 To dans une colonne séparée. Cependant, certaines personnes le notent comme 4x10 To ou 4 x 10 To ou 4 x 10 To. Certaines données ne représentent que des Go.

Existe-t-il une formule à utiliser pour au moins extraire le stockage?

user325212
la source
Avec Excel, une solution serait regex .. Ce n’est pas vraiment facile de traiter avec eux et de les mettre en œuvre .. Ce lien pourrait vous aider: stackoverflow.com/questions/9744602/…
Tofandel
Désolé, j'ai peut-être mal compris ... Que voulez-vous dire par "les données proviennent d'un champ de notes?" Je pensais que vous vouliez dire que c'est dans un commentaire, mais peut-être que vous voulez simplement dire que c'est de forme libre et donc difficile à égaler?
Madball73
Désolé, je voulais dire un champ de notes de la base de données. Personne n'a entré les tailles dans une colonne séparée. Dans Excel, l'extrait de mon exemple est dans une colonne.
user325212

Réponses:

0

J'ajouterais probablement 4 colonnes, ce qui faciliterait la résolution des problèmes et les conversions mathématiques plus tard.

  1. Chaîne à analyser
  2. Compter
  3. Taille
  4. 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.

Madball73
la source