2010-11-01 5 views
2

J'ai une colonne de "tailles de fichier" qui a été mal sortie, car elle n'est pas cohérente. Par exemple, les valeurs peuvent être "4 Go", "32 Mo", "320 Ko", "932 ​​octets", etc. J'ai besoin de les convertir toutes en une valeur standard afin que je puisse les additionner pour un rapport.Conversion de diverses tailles de fichiers en octets

+0

Veuillez poster ce que vous avez essayé et quel a été le résultat. –

+0

Sans données sous-jacentes appropriées, vos valeurs seront mal représentées. Lorsqu'elle est exprimée en Go, 499 Mo consomment-ils 0 ou 1 Go? Qu'en est-il de '932 octets'? ... combien d'octets sont dans ~ 4 Go de données? 4294967296 ou 4400000000 ou 3900000000 .... juste quelque chose à considérer.Utilisez un arrondi grossier et faites-le avec. – jcolebrand

Répondre

0

Les octets, les kilooctets, les mégaoctets, etc. sont tous des unités métriques. Choisissez simplement une unité standard pour votre rapport (par exemple, mégaoctets), et multipliez ou divisez les valeurs données dans différentes unités pour obtenir les valeurs dont vous avez besoin.

1

Je dirais que vous avez deux options:

1: exiger que toutes ces données en unités d'octets (probablement pas possible si les données existent déjà)

2: utiliser une expression régulière pour séparer les Numéro de l'unité, puis utilisez une instruction de commutateur (ou une boucle ou ce que vous voulez) pour effectuer les multiplications correctes pour obtenir le nombre en octets (probablement le plus facile des deux).

modifier:

le regex ressemblerait à quelque chose comme ceci:

(\d*) *(.*) 

Cela permettra de saisir des chiffres et des unités séparément et ignorer les espaces blancs entre les deux (vous aurez toujours besoin de couper l'entrée l'expression rationnelle, en tant qu'espace précédant et en cours, peut causer de la peine).

2

considérer cette approche

  • choisir un format d'affichage. Peut-être choisir des octets.

Pour chaque cellule:

  • déterminer son ampleur. Cela impliquerait probablement l'analyse syntaxique des chaînes, à la recherche de "se termine par" une plage valide de possibilités: "octets", "kb", "mb", "gb", "kilooctets", "gigaoctets". Convertir en minuscules d'abord, pour assurer la santé mentale. Considérez les fautes d'orthographe aussi bien!

  • d'extraire le numéro. Utilisez une variante de ce VBA numeric regex pour extraire les nombres. Attention aux décimales!

  • votre sortie sera (le nombre) * (l'échelle en octets)

2

Voici une réponse très simple - mais il pourrait en faire une solution très rapide pour vous, si le nombre d'octets exact sont pas tout important. Faites simplement une simple recherche de texte et remplacez-la.

Remplacer "KB" (et "kilo-octets" et autres variantes) par "000", "MB" avec "000000" et "GB" avec "000000000". "octets" vous remplacez par "". Puis convertissez le type de cellule/colonne en numérique.

Ce ne sera pas aussi simple si les valeurs sont données avec des décimales ("4,32 Mo"), mais vos exemples devraient fonctionner correctement.