我需要将一些数字从一个扩展为另一个
例如当输入为 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:我删除了多余的括号以使代码更具可读性。