如何在 VBA 中扩展数字

如何在 VBA 中扩展数字

我需要将一些数字从一个扩展为另一个

例如当输入为 399207 且 10 = 输出 399207 399208 399209 399210

输入:

422209           10
904L1009         10
356608           11
0003ML00030-1    3
00EO0632         33
00SH0062         65
0177-5002        3
01RLCB0082901001 3
02AE0078         81
02ID0081         82
0301ME001218-1   3
07HY0569         71
327798           800
336999           7000

目前我使用用户定义的子函数来完成这个过程

这是我的代码

Function EXPAND_serial(pno As String, n As String, _
                       Optional delim As String = "@")

    Dim m As String, i As Long, pnos As Variant

    m = Right(pno, Len(n))
    pno = Left(pno, Len(pno) - Len(n))
    ReDim pnos((m) To (n))

    For i = (m) To (n)
        pnos(i) = pno & (i)
    Next i


    EXPAND_serial = Join(pnos, delim)

End Function

当我使用此代码时,它对主要数字(01 到 09)工作正常,但如果跨越 09 到 10 或更多

它跳过了 0因此,如果出现 0,则输入数字与每个输出数字长度不匹配

请参阅我的 Snap 以更好地理解。如何解决此问题帮助我

浅红色背景高亮有问题

在此处输入图片描述

答案1

看起来很简单,如果我错了请纠正,使用函数String(Number, Character)就可以完成。你可以更多地了解这个函数这里

Function EXPAND_serial(pno As String, n As String, _
                       Optional delim As String = "@")

    Dim m As String, i As Long, pnos As String

    m = Right(pno, Len(n))
    pno = Left(pno, Len(pno) - Len(n))
    ReDim pnos(m To n)

    For i = m To n
        pnos(i) = pno & String(Len(n) - Len(CStr(i)), "0") & i
    Next i

    EXPAND_serial = Join(pnos, delim)

End Function

PS:我删除了多余的括号以使代码更具可读性。

相关内容