将各种文件大小转换为字节

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

考虑这种方法

  • select一种显示格式。 也许select字节。

对于每个单元格:

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

  • 提取数字。 使用此VBA数字正则expression式的变体来提取数字。 小心小数!

  • 你的输出将是(数字)*(以字节为单位的比例)

这是一个非常简单的答案 – 但是如果确切的字节数并不重要的话,这可能会让你很快解决这个问题。 只要做一个简单的文字search和replace。

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

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

我会说你有两个select:

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

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

编辑:

正则expression式看起来像这样:

 (\d*) *(.*) 

这将分别捕获数字和单位,并忽略两者之间的任何空白(你仍然需要修剪input到正则expression式,因为前面和后面的空白可能导致一些悲伤)。

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