2010-11-01 56 views
2

我有一列“文件大小”输出不佳,因为它不一致。例如,值可能是“4GB”,“32 MB”,“320 KB”,“932字节”等。我需要将这些全部转换为标准值,以便我可以将它们添加为报告。将各种文件大小转换为字节

+0

请发布您尝试过什么,结果如何。 – 2010-11-01 20:22:40

+0

如果没有适当的基础数据,您的价值观将会被错误地重复。以GB表示时,499MB是否消耗0或1GB? '932字节'呢? ...〜4GB数据中有多少字节? 4294967296或4400000000或3900000000 ....只是需要考虑。使用粗糙的四舍五入并完成它。 – jcolebrand 2010-11-01 20:23:39

回答

0

字节,千字节,兆字节等都是公制单位。只需为您的报告选择一个标准单位(例如兆字节),然后乘以或除以不同单位给出的值即可获得您需要的值。

1

我会说你有两个选择:

1:要求所有的这些数据可以以字节为单位(可能不是可行的,如果数据已经存在)

2:使用正则表达式来分隔然后使用一个switch语句(或循环或任何你喜欢的)来执行正确的乘法运算,以获得以字节为单位的数字(可能是两者中较容易的)。

编辑:

的正则表达式将是这个样子:

(\d*) *(.*) 

这将分别捕获数字和单位而忽视了两者之间的任何空白(你仍然需要修正输入到正则表达式,因为前面和后面的空格可能会导致一些悲伤)。

2

考虑使用此方法

  • 接一个显示格式。也许选择字节。

对于每个小区:

  • 确定其比例。这可能涉及字符串解析,寻找“结束于”一些有效范围的可能性:“字节”,“kb”,“mb”,“gb”,“千字节”,“千兆字节”。首先转换为小写,以确保清醒。考虑拼写错误!

  • 提取数字。使用此VBA numeric regex的变体来提取数字。小心小数点!

  • 你的输出将是(对数)×(以字节为单位的规模)

2

这里是一个非常单纯的答案 - 但它可能使这是一个非常快速修复你,如果精确的字节计数并非全部重要。只要做一个简单的文字搜索和替换。

用“000”,“MB”用“000000”和“GB”用“000000000”替换“KB”(和“千字节”及其他变体)。用“”替换“字节”。然后将单元格/列类型转换为数字。

如果值是用小数(“4.32 MB”)给出的,那么它不会那么容易,但是您的示例应该可以正常工作。