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.
我将为每个单独的结果添加串联,以便区分数据.
这是您正在寻找的功能:
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)