如何让这个 VBA 代码输出为特定的数字格式?
How do I get this VBA code to output to a specific number format?
这是我不久前收到的另一个回答。
下面的这段代码很棒,但现在我希望它也能输出每个数字的 4 位数字。因此,如果我得到 1,2,3 的 return,我希望它 return 为“0001,0002,0003”。
Function NumRange(v)
Dim arrC, arr, x As Long, rv As String, sep As String, e
arrC = Split(v, ",")
rv = ""
For Each e In arrC
If InStr(e, "-") Then
arr = Split(e, "-")
arr(0) = Trim(arr(0))
arr(1) = Trim(arr(1))
If IsNumeric(arr(0)) And IsNumeric(arr(1)) Then
For x = CLng(arr(0)) To CLng(arr(1))
rv = rv & sep & x
sep = ","
Next x
End If
ElseIf IsNumeric(e) Then
rv = rv & sep & CLng(e)
sep = ","
End If
Next e
NumRange = rv
End Function
这是一个格式化整数的简单函数:
Function PadLeft(Value, FillerChar, Size)
PadLeft = Right(String(Size, FillerChar) + cStr(Value), Size)
End Function
使用示例
Dim StringToPrint = PadLeft(7, "0", 4)
' StringToPrint value is now "0007"
这有点蛮力,但您可以使用 LPAD
或 PadLeft()
function/method:
的这个方便翻译的变体
Any method equivalent to PadLeft/PadRight?
Function NumRange(v)
Dim arrC, arr, x As Long, rv As String, sep As String, e
arrC = Split(v, ",")
rv = ""
For Each e In arrC
If InStr(e, "-") Then
arr = Split(e, "-")
arr(0) = Trim(arr(0))
arr(1) = Trim(arr(1))
If IsNumeric(arr(0)) And IsNumeric(arr(1)) Then
For x = CLng(arr(0)) To CLng(arr(1))
rv = rv & sep & Right("0000" & x, 4)
sep = ","
Next x
End If
ElseIf IsNumeric(e) Then
rv = rv & sep & Right("0000" & e, 4)
sep = ","
End If
Next e
NumRange = rv
End Function
现在一个包含公式的单元格:
=NumRange("1-10")
将包含:
001,002,003,004,005,006,007,008,009,010
这是我不久前收到的另一个回答。
下面的这段代码很棒,但现在我希望它也能输出每个数字的 4 位数字。因此,如果我得到 1,2,3 的 return,我希望它 return 为“0001,0002,0003”。
Function NumRange(v)
Dim arrC, arr, x As Long, rv As String, sep As String, e
arrC = Split(v, ",")
rv = ""
For Each e In arrC
If InStr(e, "-") Then
arr = Split(e, "-")
arr(0) = Trim(arr(0))
arr(1) = Trim(arr(1))
If IsNumeric(arr(0)) And IsNumeric(arr(1)) Then
For x = CLng(arr(0)) To CLng(arr(1))
rv = rv & sep & x
sep = ","
Next x
End If
ElseIf IsNumeric(e) Then
rv = rv & sep & CLng(e)
sep = ","
End If
Next e
NumRange = rv
End Function
这是一个格式化整数的简单函数:
Function PadLeft(Value, FillerChar, Size)
PadLeft = Right(String(Size, FillerChar) + cStr(Value), Size)
End Function
使用示例
Dim StringToPrint = PadLeft(7, "0", 4)
' StringToPrint value is now "0007"
这有点蛮力,但您可以使用 LPAD
或 PadLeft()
function/method:
Any method equivalent to PadLeft/PadRight?
Function NumRange(v)
Dim arrC, arr, x As Long, rv As String, sep As String, e
arrC = Split(v, ",")
rv = ""
For Each e In arrC
If InStr(e, "-") Then
arr = Split(e, "-")
arr(0) = Trim(arr(0))
arr(1) = Trim(arr(1))
If IsNumeric(arr(0)) And IsNumeric(arr(1)) Then
For x = CLng(arr(0)) To CLng(arr(1))
rv = rv & sep & Right("0000" & x, 4)
sep = ","
Next x
End If
ElseIf IsNumeric(e) Then
rv = rv & sep & Right("0000" & e, 4)
sep = ","
End If
Next e
NumRange = rv
End Function
现在一个包含公式的单元格:
=NumRange("1-10")
将包含:
001,002,003,004,005,006,007,008,009,010