如何在Excel中将字节格式化为KB、MB、GB等单位?

114

我的某个单元格中有一个以字节为单位的值。 但是728398112238没有人能读懂。 我更想它显示为678.37GB。

为了相对容易地编写格式公式(这里有一个:http://www.yonahruss.com/2007/02/format-excel-numbers-as-gb-mb-kb-b.html),

但是有没有一种方法可以将其作为“格式”来完成? 我想在单元格中使用大数字,但显示为人类可读格式。


3
如果你对这种事情感兴趣的话,给你一个快速提示:"kB"是标准单位(小写'k',不是大写)。来源:http://en.wikipedia.org/wiki/Kilobyte http://en.wikipedia.org/wiki/Kilo- 如果你对此不感兴趣,请忽略我的帖子 :) - PonyEars
1
这篇帖子中的链接已经失效。这里提供另一个使用公式的解决方案链接:https://social.technet.microsoft.com/Forums/en-US/1063a039-f26b-4bfe-a9eb-2704ae0575dc/format-for-kbmbgbtb?forum=excel - Joost
3
这是公式=IF(A1>POWER(1024,4),TRUNC(A1/POWER(1024,4),2)&" TB", IF(A1>POWER(1024,3),TRUNC(A1/POWER(1024,3),2)&" GB", IF(A1>POWER(1024,2), ROUND(A1/POWER(1024,2),0)&" MB", ROUND(A1/1024,0)&" KB"))) - Steve
回溯机器链接:https://web.archive.org/web/20090306232900/https://www.yonahruss.com/2007/02/format-excel-numbers-as-gb-mb-kb-b.html(目前有太多待处理的编辑,所以我现在无法更改) - undefined
20个回答

123

在 Excel 的格式化功能中,你实际上无法进行计算。不过,你可以使用以下类似的方法来进行粗略的估算:

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

1
哇...你证实了我的怀疑,我不能做计算...但是你的解决方案真是天才!我会使用那个或类似的东西。谢谢! - RickMeasham
7
对于千位分隔符为“ ”、小数点分隔符为“,”的区域设定:
  • 小于500,000:显示格式为“# ##0 B ”;
  • 介于500,000和500,000,000之间:显示格式为“# ##0 MB”;
  • 大于或等于500,000,000:显示格式为“# ##0 GB”。
- Grastveit
3
很抱歉,但这段代码是错误的!除以“5”或500000会将值转换为完全不同的值。我使用了值“569692”,而这段代码给出了“1 MB”。 - Alper t. Turker
有人能解释一下为什么这里使用的是500,000和500,000,000而不是1000或1024的倍数吗? - user736893
1
我给出的答案暗示了这一点。因为格式化中无法进行计算(即500,000/1,000),所以我使用500,000和500,000,000作为中点来确定何时应将事物舍入到B、MB、GB。这是一个hack,如果需要精度,则不应使用。如果需要更高的精度,可以采取其他措施(例如通过宏进行自定义公式、单元格公式、命名范围等)。 - guitarthrower

70

这是我一直在使用的方法: -

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

看起来运行得很好。


2
虽然不完美(1000的倍数与1024相比),但足够好并且受到赞同。谢谢! - Skwerl
4
Kevin表示,kB/MB/GB只在1000的倍数上是正确的(如SI定义,Mac和硬盘使用)。他猜想这并不改变你想要1024(更准确地写作KiB/MiB/GiB,如Linux GUI中所使用),所以他只是指出Windows维护了这种历史悠久且令人困惑的记法。二进制记法已经在上个世纪被标准化了,所以现在是时候进行更新了。;-) - Luke Usherwood
1
或者如果你想要字节、千字节和兆字节而不是千字节、兆字节和吉字节:[<1000]#" B";[<1000000]0.00," KB";0.00,," MB" - Aaron Campbell

23

上述格式化方法可以工作,但仅限于三个级别。上面使用了KB,MB和GB。这里我将其扩展到六个级别。右键单击单元格并选择“格式化单元格”。在“数字”选项卡下,选择“自定义”。然后在“类型:”框中输入以下内容:

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

然后选择“确定”。这涵盖了B、KB和MB。然后,选定相同的单元格,点击首页功能区,条件格式,新建规则。选择仅格式化包含单元格。然后,在规则描述下方,选择仅格式化包含单元格值大于或等于 1000000000(即9个零)的单元格。然后点击“格式”,数字选项卡,自定义,在“类型”框中输入以下内容:

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

选择“确定”和“确定”。只有当数值大于1,000,000,000时,此条件格式才会生效。它将处理GB、TB和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

如果大于PB的值将显示为更大的PB,例如56,700 PB。您可以添加另一个条件格式来处理更大的值,如EB等。


1
一个小提示:如果在安装中有规定其他分隔符的语言环境,请使用正确的分隔符替换上述字符串中的分隔符。在我的语言环境中,逗号和点号被交换了,因此我必须使用以下格式:[<1000]##0,00" B";[<1000000]##0,00." KB";##0,00.." MB" 和 [<1000000000000]##0,00..." GB";[<1000000000000000]##0,00...." TB";#.##0,00....." PB"。 - user1708042

13

虽然 Excel 格式条件只会显示与数字大小相关的三种条件之一(它们将其编码为 "正数、负数、零、文本",但我更喜欢看作: 如果是数字并且为真;否则,如果是数字而为假;否则,如果是数字;否则,如果是文本

因此,在我看来,最好的答案是 David 的,以及 Grastveit 在其他地区格式方面的评论。

这是我根据所做报告的不同使用的格式之一。

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

随便选!


12

稍作调整,以适应我的地区欧洲(使用"."作为千位分隔符,使用","作为小数点):

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

数据转换仍存在相同的问题(1000!=1024),但对我来说它完成了工作。


9

因为还没有人写过这个答案,所以我认为对于未来的帖子查找者来说这会很有用。在Excel中使用转换函数可以轻松地进行比特和字节的转换。

您只需要使用=CONVERT(数字或单元格, "fromDatatype", "toDatatype")

例如,=CONVERT(5, "Gbyte", "Mbyte")

关于此内容,您可以在“测量系统”->“信息”下找到相关文档。 https://support.microsoft.com/en-us/office/convert-function-d785bef1-808e-4aac-bdcd-666c810f9af2

遗憾的是没有关于前缀(如MMiGGi)的图表。但这很容易。只需使用常见的前缀,然后分别加上“bit”或“byte”。

前缀 简称 比特 字节
尧塔 Y Y比特 Y字节
泽它 Z Z比特 Z字节
艾克萨 E E比特 E字节
拍它 P P比特 P字节
太拉 T T比特 T字节
吉卡 G G比特 G字节
M M比特 M字节
k k比特 k字节
h h比特 h字节
da dabit dabyte
尧比 Yi Yibit Yibyte
斯比 Zi Zibit Zibyte
艾比 Ei Eibit Eibyte
拍比 Pi Pibit Pibyte
太比 Ti Tibit Tibyte
吉比 Gi Gibit Gibyte
美比 Mi Mibit Mibyte
基比 ki kibit kibyte

1
这很棒,但函数名是“CONVERT”,而不是“CONVERSION”。 - ReflexiveCode
这绝对是最好的解决方案,自Excel 2007以来就一直可用。有关CONVERT的更多信息,包括图表,请访问https://www.excelfunctions.net/excel-convert-function.html。 - undefined

6

我不知道有什么方法可以让它显示二进制千兆字节(1024x1024x1024的倍数),但是您可以使用以下格式使其显示十进制千兆字节:

0.00,,,"GB"

我喜欢它的简洁性。即使它不是1024的倍数,这个答案也很有用。 - satoc
1024的倍数不会是KB、MB、GB,而应该是KiB、MiB、GiB。 - Nilpo

4
上述公式在第一行需要一个减号:"=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

另一种解决方法是使用工程计数法(类似于科学计数法,但指数总是3的倍数)。右键单击单元格并选择“格式单元格”。在“数字”选项卡下,选择“自定义”。然后在“类型”框中输入以下内容:

##0.00E+00

然后点击“确定”。与其使用K,M等单位,您将使用+3,+6等单位。这适用于正数、负数以及正数和负数的指数,-3表示m,-6表示u,等等。

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

将以下代码粘贴到您的数值(bytes)旁边,它会自动将其转换为相应大小的值。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接