我有一列“文件大小”,输出效果不佳,因为它不一致。例如,值可以是“4GB”,“32 MB”,“320 KB”,“932字节”等。我需要将这些全部转换为标准值,以便我可以将它们添加到报告中。
答案 0 :(得分:2)
考虑这种方法
对于每个细胞:
确定其规模。这可能涉及字符串解析,寻找“结束”一些有效的可能性范围:“字节”,“kb”,“mb”,“gb”,“千字节”,“千兆字节”。首先转换为小写,以确保理智。考虑拼写错误!
提取数字。使用此VBA numeric regex的变体来提取数字。注意小数!
您的输出将是(数字)*(以字节为单位的比例)
答案 1 :(得分:2)
这是一个非常简单的答案 - 但如果确切的字节数不是很重要的话,它可能会让你快速解决这个问题。只需进行简单的文本搜索和替换即可。
将“KB”(和“千字节”及其他变体)替换为“000”,将“MB”替换为“000000”,将“GB”替换为“000000000”。用“”替换“bytes”。然后将单元格/列类型转换为数字。
如果值以小数(“4.32 MB”)给出,则不会那么容易,但您的示例应该可以正常工作。
答案 2 :(得分:1)
我想说你有两个选择:
1:要求所有这些数据都以字节为单位(如果数据已经存在,则可能不可行)
2:使用正则表达式将数字与单位分开,然后使用switch语句(或循环或任何你喜欢的)来执行正确的乘法以获得以字节为单位的数字(可能两者中更容易)。 / p>
编辑:
正则表达式看起来像这样:
(\d*) *(.*)
这将分别捕获数字和单位,并忽略两者之间的任何空格(你仍然需要修改正则表达式的输入,因为前面和前面的空格可能会引起一些悲伤)。
答案 3 :(得分:0)
字节,千字节,兆字节等都是公制单位。只需为报告选择一个标准单位(例如,兆字节),然后乘以或除以不同单位给出的值即可获得所需的值。