我如何得到这个VBA代码输出到一个特定的数字格式?

这是我刚才收到的另一个答案。

将单元格中的值范围转换为逗号分隔列表

下面的代码是伟大的东西,但现在我想它也输出每个数字4位数。 所以如果我得到1,2,3的回报,我希望它返回为“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 

这是一个小蛮力,但你可以使用LPADPadLeft()函数/方法的这个方便的翻译的变种:

任何等同于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 

这是一个简单的函数来格式化一个整数:

 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" 
Interesting Posts