Como posso formatar bytes de uma célula no Excel como KB, MB, GB etc?


86

Eu tenho um valor em uma célula que está em bytes. Mas ninguém consegue ler 728398112238. Prefiro dizer 678,37 GB

Para escrever uma fórmula para formatá-la relativamente fácil (aqui está: http://www.yonahruss.com/2007/02/format-excel-numbers-as-gb-mb-kb-b.html )

Mas existe alguma maneira de fazer isso como um 'formato'? Gostaria de ter o número grande na célula, mas exibi-lo no formato legível por humanos.


3
Observe rapidamente se você está interessado em coisas como esta: "kB" é o padrão ('k' minúsculo, não maiúsculo). Fontes: en.wikipedia.org/wiki/Kilobyte en.wikipedia.org/wiki/Kilo- Se você não estiver interessado, ignore minha postagem :)
PonyEars

O link nesta postagem está morto. Aqui está outro link para uma solução usando uma fórmula: social.technet.microsoft.com/Forums/en-US/…
Joost

Respostas:


98

Você realmente não pode fazer cálculos nos recursos de formatação do Excel. Você pode usar algo como o seguinte para fazer uma estimativa aproximada:

[<500000]#,##0" B";[<500000000]#,##0,," MB";#,##0,,," GB"

1
Uau .. você confirmou minha suspeita de que não posso fazer cálculos .. mas sua solução é genial! Vou usar isso ou algo próximo. Obrigado!
RickMeasham,

6
Para configurações regionais com '' como separador de milhar e ',' como separador de vírgula: [<500000] # ## 0 "B"; [<500000000] # ## 0 "MB"; # ## 0 "GB"
Grastveit

1
Sinto muito, mas este código está errado! Dividir por "5" ou 500000 converterá o valor em um valor completamente diferente. Usei o valor "569692" e esse código me deu "1 MB"
Alper t. Turker de

53

Aqui está um que tenho usado: -

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

Parece funcionar bem.


2
não perfeito (múltiplos de 1000 vs 1024), mas bom o suficiente e votado. obrigado!
Skwerl

2
Kevin: KB / MB / GB está realmente correto com múltiplos de 1000 apenas (conforme definido pelo SI, usado pelo Mac e discos rígidos). Eu acho que isso não muda o fato de você querer 1024 (escrito mais corretamente KiB / MiB / GiB, como usado nas GUIs do Linux), então apenas apontando que é o Windows que mantém essa notação histórica e confusa. A notação binária foi padronizada no século passado, então é hora de começar o programa. ;-)
Luke Usherwood

1
Ou se você quiser bytes, KB e MB em vez de KB, MB, GB:[<1000]#" B";[<1000000]0.00," KB";0.00,," MB"
Aaron Campbell,

12

Embora as condições de formato do Excel exibam apenas 1 de 3 condições relacionadas ao tamanho do número (elas o codificam como "positivo; negativo; zero; texto", mas eu prefiro vê-lo como: if isnumber e true; elseif isnumber e false; elseif number; elseif é texto )

então, para mim, a melhor resposta é o comentário de David e de Grastveit para outro formato regional.

Aqui estão os que uso de acordo com os relatórios que faço.

[<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"

Faça sua escolha!


12

A abordagem de formatação acima funciona, mas apenas para três níveis. O acima usado KB, MB e GB. Aqui eu ampliei para seis. Clique com o botão direito na (s) célula (s) e selecione Formatar células. Na guia Número, selecione Personalizado. Em seguida, na caixa Tipo :, coloque o seguinte:

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

Em seguida, selecione OK. Isso cobre B, KB e MB. Em seguida, com as mesmas células selecionadas, clique na faixa inicial, Formatação condicional, Nova regra. Selecione Formatar apenas células que contêm. A seguir, na descrição da regra, Formatar apenas células com Valor da célula maior ou igual a 1000000000 (9 zeros). Em seguida, clique em Formatar, guia Número, Personalizar e na caixa Tipo: coloque o seguinte:

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

Selecione OK e OK. Essa formatação condicional assumirá apenas se o valor for maior que 1.000.000.000. E ele cuidará dos intervalos de GB, TB e 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

Qualquer coisa maior que PB apenas aparecerá como um PB maior, por exemplo, 56.700 PB. Você pode adicionar outra formatação condicional para lidar com valores ainda maiores, EB e assim por diante.


1
Uma pequena nota: se em um installatoin você tem um local que prescreve outros separadores, substitua os separadores nas strings acima pelos apropriados. Em meu idioma, e. foram trocados então eu tive que usar: [<1000] ## 0,00 "B"; [<1000000] ## 0,00. "KB"; ## 0,00 .. "MB" e [<1000000000000] ## 0,00 ... "GB"; [<1000000000000000] ## 0,00 .... "TB"; #. ## 0,00 ..... "PB"
usuário1708042

10

Ligeira mudança para fazê-lo funcionar na minha região, Europa (. Como separador de milhares, vírgula como separador decimal):

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

Ainda o mesmo problema na conversão de dados (1000! = 1024), mas faz o trabalho para mim.


4

Não sei como fazer com que ele mostre gigabytes binários (múltiplos de 1024 * 1024 * 1024), mas você pode fazer com que ele mostre gigabytes decimais usando um formato como:

0.00,,,"Gb"

2
Observe que b é bit e B é byte. Um bit é 1/8 de um byte, portanto, para evitar confusão, certifique-se sempre de usar a letra correta. O mesmo vale para prefixos como M para mega (1000000 ×) e m para mili (1/1000).
Liggliluff

Gosto da simplicidade. Mesmo que não seja múltiplos de 1.024, essa resposta é útil.
satoc de

3

A fórmula acima requer um sinal de menos na primeira linha: "= 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""")))))))))))

3

E, ainda outra solução, é usar notação de engenharia. (É como a notação científica, exceto que o expoente é sempre um múltiplo de 3.) Clique com o botão direito na (s) célula (s) e selecione Formatar células. Na guia Número, selecione Personalizado. Em seguida, na caixa Tipo :, coloque o seguinte:

##0.00E+00

Em seguida, clique em OK. Em vez de K, M, etc, você terá +3, +6, etc. Isso funcionará para números positivos e negativos, bem como expoentes positivos e negativos, -3 é m, -6 é 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

1

Menos de Tera gravará em GB e mais de 999 GB gravará em TB

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

OU

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


1

Eu uso o CDH hadoop e quando exporto um relatório do Excel, tenho dois problemas;

1) converta a data do Linux em data do Excel,
para isso, adicione uma coluna vazia ao lado da coluna da data, digamos que a linha superior seja B4, cole a fórmula abaixo e arraste o PRETO "+" até o seu último dia no final do coluna. Em seguida, esconda a coluna original

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

2) Converta o tamanho do disco de byte para TB, GB e MB,
a melhor fórmula para isso é esta

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

ele lhe dará valores com 3 decimais apenas formate as células -> Personalizar e cole o código acima lá


1

É um pouco de "força bruta", mas 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")))))

insira a descrição da imagem aqui


Olá, bem-vindo ao Stack Overflow. Ao responder uma pergunta que já tem muitas respostas, certifique-se de adicionar alguns insights adicionais sobre por que a resposta que você está fornecendo é substantiva e não apenas ecoando o que já foi examinado pelo autor original. Isso é especialmente importante em respostas "somente código", como a que você forneceu.
chb

1

Cole ao lado de seus valores (bytes) e isso irá alterá-lo automaticamente para qualquer tamanho 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)))))


1

Todas as respostas aqui fornecem valores com potências de 10. Aqui está um formato usando unidades SI adequadas (múltiplos de 1024, ou seja, Mebibytes, Gibibytes e Tebibytes):

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

Suporta MiB, GiB e TiB mostrando duas casas decimais.


0

Depois de ver as respostas aqui, apenas melhorou esta fórmula para ter casas decimais em valores maiores e atender a 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""")))))))))))

1
A pergunta original incluía detalhes sobre como usar uma fórmula. Mas trata-se de usar um formato de número. Sua solução é muito semelhante à do link, exceto que você lida com números negativos. Em vez de incluí-los em instruções IF separadas, use ABS () para obter o valor absoluto.
RickMeasham

0

Suspeito que muitas das respostas aqui estão desatualizadas, pois não obtive o resultado esperado com a resposta fornecida.

Se você tem um valor em KB que deseja formatar de acordo com o tamanho, pode tentar o seguinte.


Fórmula

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


Valor inicial (em KB) => Saída

952 => 952 KB

1514 => 1.51 MB

5122323 => 5.12 GB


0

Para obter o resultado exato, prefiro calculá-lo, mas usando o formato de exibição.

Supondo que a célula A1 tenha o valor 29773945664927.

  1. Conte o número de vírgulas na célula B1.

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

  2. Divida o valor por 1024 ^ B1 na célula C1.

    = A1 / 1024 ^ B1

  3. Unidade de exibição na célula D1.

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

  4. Oculte a célula B1.

captura de tela

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.