将文件大小从字节转换为Kb或Mb

时间:2016-10-07 08:14:44

标签: excel vba excel-vba

我有大量的行,其中包含不同的值,从1000s到1,000,000s。

这是以字节为单位的数据,我需要将其转换为Kb或Mb。

我可以将所有值除以1M并获得所有数据和Mb,但我希望将数据分为kb和Mb。

我尝试使用MOD功能,但不会这样做,因为所有数字都可以被1K和1M整除,所以我有点卡住了!

这是我得到的数据样本:

16000000
220000
2048000
2048000
230000
16000000
230000
16000000
220000
230000

所以我需要的是,如果单元格包含6个零,则除以1M,或者如果单元格包含3个零,则除以1000.

我将为每个单独的结果添加连接,以便区分数据。

4 个答案:

答案 0 :(得分:5)

这是您正在寻找的功能:

Public Function SizeInStr(ByVal Size_Bytes As Double) As String
    Dim TS()
    ReDim TS(4)
    TS(0) = "b"
    TS(1) = "kb"
    TS(2) = "Mb"
    TS(3) = "Gb"
    TS(4) = "Tb"

Dim Size_Counter As Integer
Size_Counter = 0

    If Size_Bytes <= 1 Then
        Size_Counter = 1
    Else
        While Size_Bytes > 1
            Size_Bytes = Size_Bytes / 1000
            ''Or
            'Size_Bytes = Size_Bytes / 1024
            Size_Counter = Size_Counter + 1
        Wend
    End If

    SizeInStr = Format(Size_Bytes * 1000, "##0.0#") & " " & TS(Size_Counter - 1)
    ''Or
    'SizeInStr = Format(Size_Bytes * 1024, "##0.0#") & " " & TS(Size_Counter - 1)
End Function

使用它就像这样:

Private Sub Test_SizeInStr()
   MsgBox SizeInStr(1000000)
End Sub

答案 1 :(得分:3)

如果您要查找某些VBA代码,可以使用此功能:

Public Function yourFunction(ByVal number)
  If number > 1000000 Then
    'number as MB
    yourFunction = number / 1000000
    'or use the following to add MB
    'yourFunction = (number / 1000000) & " Mb"
  Else
    'number in kB
    yourFunction = number / 1000
    'or use the following to add kB
    'yourFunction = (number / 1000) & " Kb"
  End if
End Function

如果您正在寻找Excel-Formula,您可以使用此函数(A1中的原始值),将此公式放在另一列(例如B列)中

=IF(A1>1000000,A1/1000000,A1/1000)

或连接:

=IF(A1>1000000,CONCATENATE(A1/1000000," Mb"),CONCATENATE(A1/1000," Kb"))

答案 2 :(得分:3)

我会避免更改数字本身,而是使用数字格式。如果您使用函数或宏来修改数字,那么您将无法再例如。总结一下。

这个数字格式完全符合您的需要,但保留实际数字不变,以字节为单位,因此您仍然可以在公式中使用它们:

[>1000000]0,,"Mb";[>1000]0,"kb";0"b"

请注意,这可能与环境语言有关。对于匈牙利语区域设置,必须使用空格而不是逗号:

[>1000000]0  "Mb";[>1000]0 "kb";0"b"

每个空格/逗号的作用是什么&#34;隐藏&#34;最后三位数。

答案 3 :(得分:0)

对于任何数字n,请应用此

If n Mod 1000 = 0 Then
    n = n / 1000
End If

两次。在第一次运行时,它将数百万转换为数千,而数千转换为单位。在第二次运行时,它会将任意数千个转换为单位。