Formule Excel: normaliser les unités de taille en gigaoctets -

Formule générique

=LEFT(A1,LEN(A1)-2)/10^((MATCH(RIGHT(A1,2),("PB","TB","GB","MB","KB"),0)-3)*3)

Sommaire

Pour normaliser les unités en gigaoctets (ou mégaoctets, kilo-octets, etc.), vous pouvez utiliser une formule intelligente basée sur les fonctions MATCH, LEFT et RIGHT. Dans l'exemple illustré, la formule en C5 est:

=LEFT(B5,LEN(B5)-2)/10^((MATCH(RIGHT(B5,2),("PB","TB","GB","MB","KB"),0)-3)*3)

Remarque: pour simplifier, nous utilisons des valeurs décimales (base 10), mais il existe également une norme binaire. Voir ci-dessous.

Explication

Important: cette formule suppose que les unités sont les 2 derniers caractères de la chaîne qui comprend à la fois un nombre et une unité de mesure.

Cette formule fonctionne parce que les unités numériques ont une relation de «puissance de 10».

Au fond, cette formule sépare la partie numérique de la taille de l'unité, puis divise le nombre par le diviseur approprié pour normaliser en gigaoctets. Le diviseur est calculé comme une puissance de 10, donc la formule se réduit à ceci:

=number/10^power

Pour obtenir le nombre, la formule extrait tous les caractères de la gauche vers les unités, mais sans les inclure:

LEFT(B5,LEN(B5)-2)

Pour obtenir la "puissance", la formule correspond à l'unité dans une constante de tableau codée en dur:

MATCH(RIGHT(B5,2),("PB","TB","GB","MB","KB"),0)

Ce qui renvoie la position de l'unité dans la constante du tableau. Par exemple, pour la formule en C5, l'unité est "Ko", donc la position est 5. Ce résultat est ajusté en soustrayant 3, puis en multipliant le résultat par 3, ce qui donne 6 comme puissance, qui est utilisée comme exposant pour calculer le résultat correct en gigaoctets:

=900/10^6 =900/1000000 =0.0009

Formule standard binaire

Les ordinateurs utilisent le système de nombres binaires pour stocker et rapporter la taille des données, mais les préfixes comme «kilo», «méga», «giga», etc. sont basés sur le système métrique. C'est un sujet déroutant, mais l'utilisation d'unités de taille décimale pour le stockage sur un ordinateur n'est pas vraiment correcte, et l'écart augmente à mesure que les unités deviennent plus grandes. La formule ci-dessous se normalisera en unités binaires.

=LEFT(A1,LEN(A1)-2)/2^((MATCH(RIGHT(A1,2),("PB","TB","GB","MB","KB"),0)-3)*10)

Avec cette formule, vous obtenez techniquement des Gibibytes (Gio), pas des Gigaoctets. Plus d'informations ici et ici.

Bons liens

Réponse de Stackoverflow.com par Ron Rosenfeld

Articles intéressants...