Excel-formule: maateenheden normaliseren naar gigabytes -

Generieke formule

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

Samenvatting

Om eenheden te normaliseren naar gigabytes (of megabytes, kilobytes, enz.), Kun je een slimme formule gebruiken op basis van de MATCH-, LEFT- en RIGHT-functies. In het getoonde voorbeeld is de formule in C5:

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

Opmerking: voor de eenvoud gebruiken we decimale waarden (grondtal 10), maar er is ook een binaire standaard. Zie hieronder.

Uitleg

Belangrijk: bij deze formule wordt ervan uitgegaan dat eenheden de laatste 2 tekens zijn van de tekenreeks die zowel een getal als een maateenheid bevat.

Deze formule werkt omdat digitale eenheden een "macht van 10" -relatie hebben.

In de kern scheidt deze formule het numerieke deel van de grootte van de eenheid, en deelt het getal vervolgens door de juiste deler om te normaliseren naar gigabytes. De deler wordt berekend als een macht van 10, dus de formule herleidt tot dit:

=number/10^power

Om het nummer te krijgen, extraheert de formule alle tekens van links tot maar zonder de eenheden:

LEFT(B5,LEN(B5)-2)

Om "power" te krijgen, komt de formule overeen met de eenheid in een hardgecodeerde matrixconstante:

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

Wat de positie van de eenheid in de matrixconstante retourneert. Voor de formule in C5 is de eenheid bijvoorbeeld 'KB', dus de positie is 5. Dit resultaat wordt aangepast door 3 af te trekken en het resultaat vervolgens te vermenigvuldigen met 3, wat 6 oplevert als de macht, die wordt gebruikt als de exponent om het juiste resultaat in gigabytes te berekenen:

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

Binaire standaardformule

Computers gebruiken het binaire getallensysteem om de gegevensgrootte op te slaan en te rapporteren, maar de voorvoegsels zoals "kilo", "mega", "giga", enz. Zijn gebaseerd op het metrische systeem. Het is een verwarrend onderwerp, maar het gebruik van eenheden voor decimale grootte voor opslag op een computer is niet echt correct, en de discrepantie neemt toe naarmate eenheden groter worden. De onderstaande formule normaliseert naar binaire eenheden.

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

Met deze formule krijgt u technisch gezien Gibibytes (GiB), niet Gigabytes. Meer informatie hier en hier.

Goede links

Stackoverflow.com antwoord door Ron Rosenfeld

Interessante artikelen...