¿Cómo puedo formatear bytes en una celda en Excel como KB, MB, GB, etc.?

86

Tengo un valor en una celda que está en bytes. Pero nadie puede leer 728398112238. Prefiero que diga 678,37 GB

Para escribir una fórmula para formatearla relativamente fácil (aquí hay una: http://www.yonahruss.com/2007/02/format-excel-numbers-as-gb-mb-kb-b.html )

¿Pero hay alguna forma de hacer esto como un 'formato'? Me gustaría tener el número grande en la celda, pero que se muestre en formato legible por humanos.

RickMeasham
fuente
3
Nota rápida si está interesado en cosas como esta: "kB" es estándar ('k' minúscula, no mayúscula). Fuentes: en.wikipedia.org/wiki/Kilobyte en.wikipedia.org/wiki/Kilo- Si no está interesado, ignore mi publicación :)
PonyEars
El enlace de esta publicación está muerto. Aquí hay otro enlace a una solución utilizando una fórmula: social.technet.microsoft.com/Forums/en-US/…
Joost

Respuestas:

98

Realmente no puede hacer cálculos en las funciones de formato de Excel. Sin embargo, puede usar algo como lo siguiente para hacer una estimación aproximada:

[<500000]#,##0" B";[<500000000]#,##0,," MB";#,##0,,," GB"
guitarthrower
fuente
1
Vaya ... has confirmado mi sospecha de que no puedo hacer cálculos ... ¡pero tu solución es genial! Usaré eso o algo parecido. ¡Gracias!
RickMeasham
6
Para configuraciones regionales con '' como separador de miles y ',' como separador de comas: [<500000] # ## 0 "B"; [<500000000] # ## 0 "MB"; # ## 0 "GB"
Grastveit
1
Lo siento, pero este código es incorrecto. Dividir por "5" o 500000 convertirá el valor en uno completamente diferente. Usé el valor "569692" y este código me dio "1 MB"
Alper t. Turker
53

Aquí hay uno que he estado usando: -

[<1000000]0.00," KB";[<1000000000]0.00,," MB";0.00,,," GB"

Parece funcionar bien.

David Thornley
fuente
2
no perfecto (múltiplos de 1000 vs 1024), pero lo suficientemente bueno y votado. ¡Gracias!
Skwerl
2
Kevin: kB / MB / GB es realmente correcto con múltiplos de 1000 solamente (como lo define SI, usado por Mac y discos duros). Supongo que esto no cambia el hecho de que desea 1024 (KiB / MiB / GiB escrito más correctamente, como se usa en las GUI de Linux), así que solo señala que es Windows el que mantiene esta notación histórica y confusa. La notación binaria se estandarizó el siglo pasado, por lo que es hora de que lo hagan con el programa. ;-)
Luke Usherwood
1
O si desea bytes, KB y MB en lugar de KB, MB, GB:[<1000]#" B";[<1000000]0.00," KB";0.00,," MB"
Aaron Campbell
12

Aunque las condiciones del formato de Excel solo mostrarán 1 de 3 condiciones relacionadas con el tamaño del número (lo codifican como "positivo; negativo; cero; texto", pero prefiero verlo como: si es número y verdadero; elseif es número y falso; elseif número; elseif es texto )

entonces, para mí, la mejor respuesta es el comentario de David y Grastveit para otros formatos regionales.

Estos son los que uso según los informes que hago.

[<1000000]#,##0.00," KB";[<1000000000]#,##0.00,," MB";#,##0.00,,," GB"

[>999999999999]#,##0.00,,,," TB";[>999999999]#,##0.00,,," GB";#.##0.00,," MB"

[<1000000]# ##0,00 " KB";[<1000000000]# ##0,00  " MB";# ##0,00   " GB"

[>999999999999]# ##0,00    " TB";[>999999999]# ##0,00   " GB";# ##0,00  " MB"

¡Elige tu opción!

Sebastien Simard
fuente
12

El enfoque de formato anterior funciona, pero solo para tres niveles. Lo anterior utilizó KB, MB y GB. Aquí lo he ampliado a seis. Haga clic derecho en la (s) celda (s) y seleccione Formato de celdas. En la pestaña Número, seleccione Personalizado. Luego, en el cuadro Tipo :, ponga lo siguiente:

[<1000]##0.00"  B";[<1000000]##0.00," KB";##0.00,," MB"

Luego seleccione Aceptar. Esto cubre B, KB y MB. Luego, con las mismas celdas seleccionadas, haga clic en la cinta Inicio, Formato condicional, Nueva regla. Seleccione Dar formato solo a las celdas que contienen. Luego, debajo de la descripción de la regla, Formatee solo celdas con, Valor de celda, mayor o igual a, 1000000000 (eso es 9 ceros). Luego haga clic en Formato, pestaña Número, Personalizado, y en el cuadro Tipo:, coloque lo siguiente:

[<1000000000000]##0.00,,," GB";[<1000000000000000]##0.00,,,," TB";#,##0.00,,,,," PB"

Seleccione Aceptar y Aceptar. Este formato condicional se hará cargo solo si el valor es mayor que 1,000,000,000. Y se ocupará de los rangos GB, TB y PB.

567.00  B
  5.67 KB
 56.70 KB
567.00 KB
  5.67 MB
 56.70 MB
567.00 MB
  5.67 GB
 56.70 GB
567.00 GB
  5.67 TB
 56.70 TB
567.00 TB
  5.67 PB
 56.70 PB

Cualquier cosa más grande que PB se mostrará como un PB más grande, por ejemplo, 56,700 PB. Puede agregar otro formato condicional para manejar valores aún mayores, EB, etc.

Yrag00
fuente
1
Una nota menor: si en una instalación tiene una configuración regional que prescribe otros separadores, reemplace los separadores en las cadenas de arriba con los adecuados. En mi idioma y. se intercambian, así que tuve que usar: [<1000] ## 0,00 "B"; [<1000000] ## 0,00. "KB"; ## 0,00 .. "MB" y [<1000000000000] ## 0,00 ... "GB"; [<1000000000000000] ## 0,00 .... "TB"; #. ## 0,00 ..... "PB"
usuario1708042
10

Ligero cambio para que funcione en mi región, Europa (. Como separador de miles, coma como separador decimal):

[<1000000]#.##0,00" KB";[<1000000000]#.##0,00.." MB";#.##0,00..." GB"

Sigue siendo el mismo problema en la conversión de datos (1000! = 1024) pero hace el trabajo por mí.

Bruno
fuente
4

No conozco una forma de hacer que le muestre gigabytes binarios (múltiplos de 1024 * 1024 * 1024) pero puede hacer que le muestre gigabytes decimales usando un formato como:

0.00,,,"Gb"
Andru Luvisi
fuente
2
Tenga en cuenta que b es bit y B es byte. Un bit es 1/8 de un byte, así que para evitar confusiones, asegúrese siempre de usar la letra correcta. Lo mismo ocurre con los prefijos como M para mega (1000000 ×) y m para mili (1/1000).
Liggliluff
Me gusta la sencillez. Incluso si no es múltiplo de 1,024, esta respuesta es útil.
Satoc
3

La fórmula anterior requiere un signo menos en la primera línea: "= IF (A1 <-999500000000"

=IF(A1<-999500000000,TEXT(A1,"#,##.#0,,,"" TB"""),
IF(A1<-9995000000,TEXT(A1,"#,##.#0,,,"" GB"""),
IF(A1<-9995000,TEXT(A1,"#,##0,,"" MB"""),
IF(A1<-9995,TEXT(A1,"#,##0,"" KB"""),
IF(A1<-1000,TEXT(A1,"#,##0"" B """),
IF(A1<0,TEXT(A1,"#,##0"" B """),
IF(A1<1000,TEXT(A1,"#,##0"" B """),
IF(A1<999500,TEXT(A1,"#,##0,"" KB"""),
IF(A1<999500000,TEXT(A1,"#,##0,,"" MB"""),
IF(A1<999500000000,TEXT(A1,"#,##.#0,,,"" GB"""),
TEXT(A1,"#,##.#0,,,,"" TB""")))))))))))
swhgraham
fuente
3

Y otra solución más es utilizar la notación de ingeniería. (Eso es como la notación científica, excepto que el exponente es siempre un múltiplo de 3.) Haga clic con el botón derecho en la (s) celda (s) y seleccione Formato de celdas. En la pestaña Número, seleccione Personalizado. Luego, en el cuadro Tipo :, ponga lo siguiente:

##0.00E+00

Luego haga clic en Aceptar. En lugar de K, M, etc., tendrás +3, +6, etc. Esto funcionará para números positivos y negativos, así como para exponentes positivos y negativos, -3 es m, -6 es u, etc.

567.00E-06
  5.67E-03
 56.70E-03
567.00E-03
  5.67E+00
 56.70E+00
567.00E+00
  5.67E+03
 56.70E+03
567.00E+03
  5.67E+06
Yrag00
fuente
1

Menos de Tera escribirá en GB y más de 999 GB escribirá en TB

[<1000] 0 "GB"; [> 999] 0,0, "TB"

O

[<1000] 0 "GB"; [> = 1000] 0.0, "TB"

Mored1984
fuente
1

Utilizo CDH hadoop y cuando exporto el informe de Excel, tengo dos problemas;

1) convierta la fecha de Linux en una fecha de Excel,
para eso, agregue una columna vacía al lado de la columna de la fecha, digamos que la fila superior es B4, pegue la fórmula debajo y arrastre el NEGRO "+" hasta su último día al final del columna. Luego oculta la columna original

=(((B4/1000/60)/60)/24)+DATE(1970|1|1)+(-5/24)

2) Convierta el tamaño del disco de byte a TB, GB y MB,
la mejor fórmula para eso es esta

[>999999999999]# ##0.000,,,," TB";[>999999999]# ##0.000,,," GB";# ##0.000,," MB"

le dará valores con 3 decimales, solo formatee las celdas -> Personalizar y pegue el código anterior allí

Alper t. Turker
fuente
1

Es un poco de "fuerza bruta" pero funciona;)

=IF(E4/1000<1;CONCATENATE(E4;" bps");IF(E4/1000<1000;CONCATENATE(ROUND(E4/1000;2);" kbps");IF(E4/1000000<1000;CONCATENATE(ROUND(E4/1000000;2);" mbps");IF(E4/1000000000<1000;CONCATENATE(ROUND(E4/1000000000;2);" gbps")))))

ingrese la descripción de la imagen aquí

Saulo MB - PUNTUALIDAD
fuente
Hola, bienvenido a Stack Overflow. Al responder una pregunta que ya tiene muchas respuestas, asegúrese de agregar información adicional sobre por qué la respuesta que está brindando es sustantiva y no simplemente se hace eco de lo que ya ha sido examinado por el póster original. Esto es especialmente importante en respuestas de "solo código", como la que proporcionó.
chb
1

Pegue esto junto a sus valores (bytes) y esto lo cambiará automáticamente a cualquiera que sea su tamaño de valor.

=IF(G10>=1099511627776,CONCATENATE(ROUND((G10/1024/1024/1024/1024),1)," TB"),IF(G10>=1073741824,CONCATENATE(ROUND((G10/1024/1024/1024),1)," GB"),IF(G10>=1048576,CONCATENATE(ROUND((G10/1024/1024),1)," MB"),IF(G10>=1024,CONCATENATE(ROUND((G10/1024),1)," KB"),IF(G10>=1,CONCATENATE((G10)," BYTES"),0)))))

Farooq Zhrf
fuente
1

Todas las respuestas aquí proporcionan valores con potencias de 10. Aquí hay un formato que usa las unidades SI adecuadas (múltiplos de 1024, es decir, Mebibytes, Gibibytes y Tebibytes):

[>1099511627776]#.##,,,," TiB";[>1073741824]#.##,,," GiB";0.##,," MiB"

Esto admite MiB, GiB y TiB que muestran dos decimales.

kap
fuente
0

Después de ver las respuestas aquí, acabo de mejorar esta fórmula para tener posiciones decimales en valores más grandes y atender valores negativos.

=IF(A1<999500000000,TEXT(A1,"#,##.#0,,,"" TB"""),
IF(A1<-9995000000,TEXT(A1,"#,##.#0,,,"" GB"""),
IF(A1<-9995000,TEXT(A1,"#,##0,,"" MB"""),
IF(A1<-9995,TEXT(A1,"#,##0,"" KB"""),
IF(A1<-1000,TEXT(A1,"#,##0"" B """),
IF(A1<0,TEXT(A1,"#,##0"" B """),
IF(A1<1000,TEXT(A1,"#,##0"" B """),
IF(A1<999500,TEXT(A1,"#,##0,"" KB"""),
IF(A1<999500000,TEXT(A1,"#,##0,,"" MB"""),
IF(A1<999500000000,TEXT(A1,"#,##.#0,,,"" GB"""),
TEXT(A1,"#,##.#0,,,,"" TB""")))))))))))
Pila Overflower
fuente
1
La pregunta original incluía detalles sobre el uso de una fórmula. Pero se trata de utilizar un formato numérico. Su solución es muy similar a la vinculada, excepto que trata con números negativos. En lugar de incluirlos en declaraciones IF separadas, use ABS () para obtener el valor absoluto.
RickMeasham
0

Sospecho que muchas de las respuestas aquí están desactualizadas, ya que no obtuve el resultado esperado de la respuesta dada.

Si tiene un valor en KB que le gustaría formatear de acuerdo con el tamaño, puede intentar lo siguiente.


Fórmula

[<1000]#" KB ";[<1000000]#0,00 " MB";0,## " GB"


Valor inicial (en KB) => Salida

952 => 952 KB

1514 => 1.51 MB

5122323 => 5.12 GB

Ivan Skodje
fuente
0

Para obtener el resultado exacto, prefiero calcularlo, pero usando formato de visualización.

Suponiendo que la celda A1 tiene el valor 29773945664927.

  1. Cuente el número de comas en la celda B1.

    = COCIENTE (LEN (A1) -1,3)

  2. Divida el valor por 1024 ^ B1 en la celda C1.

    = A1 / 1024 ^ B1

  3. Unidad de visualización en celda D1.

    = INTERRUPTOR (B1, 5, "PB", 4, "TB", 3, "GB", 2, "MB", 1, "KB", 0, "B")

  4. Ocultar la celda B1.

captura de pantalla

towhereur
fuente