Come posso formattare byte una cella in Excel come KB, MB, GB ecc.?


88

Ho un valore in una cella che è in byte. Ma nessuno può leggere 728398112238. Preferisco che dica 678,37 GB

Scrivere una formula per formattarla in modo relativamente semplice (eccone uno: http://www.yonahruss.com/2007/02/format-excel-numbers-as-gb-mb-kb-b.html )

Ma esiste un modo per farlo come "formato"? Mi piacerebbe avere il numero grande nella cella, ma visualizzarlo nel formato leggibile dall'uomo.


3
Nota rapida se sei interessato a cose come questa: "kB" è standard ('k' minuscola, non maiuscola). Fonti: en.wikipedia.org/wiki/Kilobyte en.wikipedia.org/wiki/Kilo- Se non sei interessato, ignora il mio post :)
PonyEars

Il link in questo post è morto. Ecco un altro collegamento a una soluzione che utilizza una formula: social.technet.microsoft.com/Forums/en-US/…
Joost

Risposte:


100

Non puoi davvero fare calcoli nelle funzionalità di formattazione di Excel. Puoi usare qualcosa di simile al seguente per fare una stima approssimativa:

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

1
Wow .. hai confermato il mio sospetto che non posso fare calcoli .. ma la tua soluzione è geniale! Userò quello o qualcosa di simile a. Grazie!
RickMeasham

6
Per le impostazioni internazionali con "come separatore mille e", "come separatore virgola: [<500000] # ## 0" B "; [<500000000] # ## 0" MB "; # ## 0" GB "
Grastveit

1
Mi dispiace, ma questo codice è sbagliato! Dividendo per "5" o 500000 il valore verrà convertito in uno completamente diverso. Ho usato il valore "569692" e questo codice mi ha dato "1 MB"
Alper t. Turker

54

Eccone uno che ho usato: -

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

Sembra funzionare bene.


2
non perfetto (multipli di 1000 vs 1024), ma abbastanza buono e votato. Grazie!
Skwerl

2
Kevin: kB / MB / GB è veramente corretto solo con multipli di 1000 (come definito da SI, utilizzato da Mac e dischi rigidi). Immagino che questo non cambi il fatto che tu voglia 1024 (KiB / MiB / GiB scritto più correttamente, come usato nelle GUI di Linux), quindi ti basta sottolineare che è Windows che mantiene questa notazione storica e confusa. La notazione binaria è stata standardizzata il secolo scorso, quindi è giunto il momento di utilizzare il programma. ;-)
Luke Usherwood

1
O se vuoi byte, KB e MB invece di KB, MB, GB:[<1000]#" B";[<1000000]0.00," KB";0.00,," MB"
Aaron Campbell

13

L'approccio di formattazione di cui sopra funziona ma solo per tre livelli. Quanto sopra utilizzava KB, MB e GB. Qui l'ho ampliato a sei. Fare clic con il pulsante destro del mouse sulle celle e selezionare Formato celle. Nella scheda Numero, seleziona Personalizzato. Quindi nella casella Tipo: inserisci quanto segue:

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

Quindi seleziona OK. Questo copre B, KB e MB. Quindi, con le stesse celle selezionate, fare clic sulla barra multifunzione Home, Formattazione condizionale, Nuova regola. Seleziona Formatta solo le celle che contengono. Quindi sotto nella descrizione della regola, Formatta solo celle con, Valore cella, maggiore o uguale a, 1000000000 (sono 9 zeri.) Quindi fai clic su Formato, scheda Numero, Personalizzato e nella casella Tipo: inserisci quanto segue:

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

Seleziona OK e OK. Questa formattazione condizionale avrà il sopravvento solo se il valore è maggiore di 1.000.000.000. E si prenderà cura delle gamme 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

Qualunque cosa più grande di PB apparirà come un PB più grande, ad esempio 56,700 PB. È possibile aggiungere un'altra formattazione condizionale per gestire valori ancora più grandi, EB e così via.


1
Una nota minore: se in un installato in avete un locale che prescrive altri separatori sostituite i separatori nelle stringhe sopra con quelli appropriati. Nella mia lingua, e. vengono scambiati, quindi ho dovuto usare: [<1000] ## 0,00 "B"; [<1000000] ## 0,00. "KB"; ## 0,00 .. "MB" e [<1000000000000] ## 0,00 ... "GB"; [<1000000000000000] ## 0,00 .... "TB"; #. ## 0,00 ..... "PB"
utente1708042

12

Sebbene le condizioni del formato Excel visualizzino solo 1 delle 3 condizioni relative alla dimensione del numero (lo codificano come "positivo; negativo; zero; testo" ma preferisco vederlo come: se è numero e vero; elseif è numero e falso; elseif numero; elseif è testo )

quindi per me la migliore risposta è il commento di David e di Grastveit per altri formati regionali.

Ecco quelli che utilizzo a seconda dei rapporti che faccio.

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

Fai la tua scelta!


10

Leggera modifica per farlo funzionare nella mia regione, Europa (. Come separatore delle migliaia, virgola come separatore decimale):

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

Sempre lo stesso problema sulla conversione dei dati (1000! = 1024) ma fa il lavoro per me.


4

Non conosco un modo per farti mostrare gigabyte binari (multipli di 1024 * 1024 * 1024) ma puoi fargli mostrare gigabyte decimali usando un formato come:

0.00,,,"Gb"

2
Notare che b è bit e B è byte. Un bit è 1/8 di byte, quindi per evitare confusione, assicurati sempre di utilizzare la lettera corretta. Lo stesso vale per i prefissi come M per mega (1000000 ×) e m per milli (1/1000).
Liggliluff

Mi piace la semplicità. Anche se non è un multiplo di 1.024, questa risposta è utile.
satoc

I multipli di 1024 non sarebbero comunque KB, MB, GB. Sarebbe KiB, MiB, GiB.
Nilpo

4

La formula precedente richiede un segno meno nella prima riga: "= 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, ancora un'altra soluzione, è usare la notazione tecnica. (È come la notazione scientifica, tranne per il fatto che l'esponente è sempre un multiplo di 3.) Fare clic con il pulsante destro del mouse sulle celle e selezionare Formato celle. Nella scheda Numero, seleziona Personalizzato. Quindi nella casella Tipo: inserisci quanto segue:

##0.00E+00

Quindi fare clic su OK. Invece di K, M, ecc., Avrai +3, +6, ecc. Questo funzionerà per numeri positivi e negativi, così come esponenti positivi e negativi, -3 è m, -6 è u, ecc.

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

2

Meno di Tera scriverà su GB e più di 999 GB scriverà su TB

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

O

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


1

Uso CDH hadoop e quando esporto il report excel ho due problemi;

1) converti la data di Linux in data excel,
per questo, aggiungi una colonna vuota accanto alla colonna della data, diciamo che la riga superiore è B4, incolla sotto la formula e trascina il NERO "+" fino all'ultimo giorno alla fine del colonna. Quindi nascondi la colonna originale

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

2) Converti la dimensione del disco da byte a TB, GB e MB,
la formula migliore è questa

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

ti darà valori con 3 decimali, formatta semplicemente le celle -> Personalizza e incolla lì il codice sopra


1

È un po 'una "forza bruta" ma funziona;)

=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")))))

inserisci qui la descrizione dell'immagine


Ciao, benvenuto in Stack Overflow. Quando rispondi a una domanda che ha già molte risposte, assicurati di aggiungere alcune informazioni aggiuntive sul motivo per cui la risposta che stai fornendo è sostanziale e non semplicemente riecheggiando ciò che è già stato controllato dal poster originale. Ciò è particolarmente importante nelle risposte "solo codice" come quella che hai fornito.
chb

1

Incollalo accanto ai tuoi valori (byte) e questo lo cambierà automaticamente in qualunque sia la tua dimensione del valore.

=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

Tutte le risposte qui forniscono valori con potenze di 10. Ecco un formato che utilizza unità SI appropriate (multipli di 1024, cioè Mebibyte, Gibibyte e Tebibyte):

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

Supporta MiB, GiB e TiB che mostrano due cifre decimali.


Stai dividendo per una potenza di 10. MiB, GiB e TiB significano 1024 ^ 2, 1024 ^ 3, 1024 ^ 4.
Sam

@ Sam probabilmente ti sei perso la risposta per il tuo commento.
kap

2
No, @Sam ha ragione. Questa risposta utilizza correttamente 1024 multipli come condizioni, ma la formattazione è ancora basata su 10.
Nilpo

0

Dopo aver visto le risposte qui, ho appena migliorato questa formula per avere posizioni decimali su valori più grandi e soddisfare valori negativi.

=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
La domanda originale includeva dettagli sull'utilizzo di una formula. Ma si tratta di utilizzare un formato numerico. La tua soluzione è molto simile a quella collegata tranne che per i numeri negativi. Invece di includerli in istruzioni IF separate, usa ABS () per ottenere il valore assoluto.
RickMeasham

0

Sospetto che molte delle risposte qui siano obsolete, poiché non ho ottenuto il risultato atteso dalla risposta fornita.

Se hai un valore in KB che desideri formattare in base alla dimensione, puoi provare quanto segue.


Formula

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


Valore iniziale (in KB) => Output

952 => 952 KB

1514 => 1.51 MB

5122323 => 5.12 GB


0

Per il risultato esatto, preferisco calcolarlo, ma utilizzando il formato di visualizzazione.

Supponendo che la cella A1 abbia il valore 29773945664927.

  1. Contare il numero di virgole nella cella B1.

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

  2. Dividi il valore per 1024 ^ B1 nella cella C1.

    = A1 / 1024 ^ B1

  3. Unità di visualizzazione nella cella D1.

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

  4. Nascondi cella B1.

immagine dello schermo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.