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

Rau*_*les 4 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
Run Code Online (Sandbox Code Playgroud)

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

我将为每个单独的结果添加串联,以便区分数据.

R3u*_*3uK 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
Run Code Online (Sandbox Code Playgroud)

像这样使用它:

Private Sub Test_SizeInStr()
   MsgBox SizeInStr(1000000)
End Sub
Run Code Online (Sandbox Code Playgroud)