1 votes

Conversion des données de la taille d'un fichier Excel

Je me retrouve souvent avec des données dans Excel sur les tailles de fichiers où les valeurs peuvent inclure des choses comme :

0
1K
850K
7.12K
19.2M
43.1G
1012G
28T
1.02P

(ok, le dernier n'est pas si fréquent, mais c'est une possibilité théorique, éventuellement)

Je souhaite souvent identifier les valeurs aberrantes, grandes ou petites, les trier par ordre de taille ou utiliser le formatage conditionnel pour m'aider à voir lesquelles sont plus grandes que celles qui les entourent.

Mes deux premières tentatives ont été :

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"T","000000000000"),"M","000000"),"K","000"),"G","000000000")
=IFERROR(LOG(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"T","000000000000"),"M","000000"),"K","000"),"G","000000000"),10),0)

(le log se convertit effectivement en "nombre de chiffres", et iferror gère le cas zéro)

Bien qu'imprécis en termes de 1000 vs 1024, cela n'a pas d'importance pour moi car je suis seulement intéressé par le repérage des valeurs aberrantes et le second fonctionne parfaitement pour mes objectifs, mais il s'effondre totalement lorsqu'il y a un point décimal.

Je cherche idéalement quelque chose de rapide et de bricolé que je puisse copier/coller (ou encore mieux taper) lorsque je passe 5 minutes à interpréter des journaux ou des rapports à la recherche d'anomalies. Je n'ai jamais l'intention de sauvegarder les feuilles que j'utilise, juste d'extraire des informations, d'être informé par celles-ci, puis de passer à la tâche suivante.

Mettre en évidence en rouge si elle contient un "G" et en violet si elle contient un "T" serait presque suffisant pour moi, mais il y a un peu trop de différence entre 1G et 990G.

De bonnes suggestions ?

S'il était réellement robuste en termes de prise en charge des multiples de 1024, et s'il était capable de gérer les MB comme les M, ce serait formidable, mais pas nécessaire pour mes besoins.

1voto

Engineer Toast Points 4317

Réponse de base :

Il existe un moyen plus direct de le faire, qui est également plus facile à étendre pour inclure des fichiers de plus grande taille (comme si cela était vraiment nécessaire lorsque vous comptez déjà en pétaoctets). Si vos données commencent en A1 la formule serait la suivante :

=IFERROR(VALUE(A1),VALUE(LEFT(A1,LEN(A1)-1)))*1000^IFERROR(SEARCH(RIGHT(A1),"KMGTPEZY"),0)

Il y a deux grandes parties à cela :

IFERROR(VALUE(A1),VALUE(LEFT(A1,LEN(A1)-1)))

La première extrait la partie numérique de la chaîne en tentant une conversion directe du texte en nombre et, en cas d'échec, elle laisse tomber le caractère le plus à droite et réessaie. Cela fonctionne tant que votre texte est toujours un nombre valide suivi de 0 ou 1 caractère non numérique.

1000^IFERROR(SEARCH(RIGHT(A1),"KMGTPEZY"),0)

La seconde moitié vous permet de multiplier ce nombre extrait par une puissance de 10 en fonction du dernier caractère. Cela se fait en extrayant le caractère le plus à droite. RIGHT(A1) et de le rechercher dans une liste SEARCH(~,"KMGTPEZY") . S'il ne trouve pas le caractère dans cette liste, il prend la valeur zéro par défaut. IFERROR(~,0) . Il élève ensuite 1000 à cette puissance 1000^~ . Si le caractère le plus à droite est K ce sera 1000^1 = 1,000 . Pour G ce sera 10^3 = 1,000,000,000 . Si la valeur est en octets, alors le caractère le plus à droite sera un nombre et, par conséquent, ne sera pas dans la liste ; ainsi, grâce à l'attribut IFERROR il sera 1000^0 = 1 .


1 000 contre 1 024 :

Pour clarifier, la formule ci-dessus est basée sur une version décimale du comptage (K = Kilobyte = 1 000 octets). Si vous travaillez en binaire (K = kibibyte = 1 024 octets), vous devez modifier légèrement la deuxième moitié :

=IFERROR(VALUE(A1),VALUE(LEFT(A1,LEN(A1)-1)))*1024^IFERROR(SEARCH(RIGHT(A1),"KMGTPEZY"),0)

Manipuler un "B" à la fin :

Quant à la manipulation KB , MB et autres, vous pouvez modifier les références à l'adresse suivante A1 de supprimer B . Plutôt que d'allonger encore la formule, nous pouvons utiliser l'expression suivante LET() pour sauvegarder le SUBSTITUTE() le résultat comme un seul caractère pour référence ultérieure.

=LET(s,SUBSTITUTE(A1,"B",""),IFERROR(VALUE(s),VALUE(LEFT(s,LEN(s)-1)))*1000^IFERROR(SEARCH(RIGHT(s),"KMGTPEZY"),0))

Si vous n'avez pas le LET() (je pense que c'est seulement pour Office 365), alors vous pouvez vous en tenir à la version vraiment longue OU (ce que je recommande) faire une colonne d'aide pour supprimer toute instance de B.

Version longue formule :

=IFERROR(VALUE(SUBSTITUTE(A1,"B","")),VALUE(LEFT(SUBSTITUTE(A1,"B",""),LEN(SUBSTITUTE(A1,"B",""))-1)))*1000^(IFERROR(SEARCH(RIGHT(SUBSTITUTE(A1,"B","")),"KMGTPEZY"),0)

Version de la colonne d'aide :

=IFERROR(VALUE(B1),VALUE(LEFT(B1,LEN(B1)-1)))*1000^(IFERROR(SEARCH(RIGHT(B1),"KMGTPEZY"),0)

Screenshot

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