Vba 使用UDF时截断前导零

Vba 使用UDF时截断前导零,vba,split,truncate,truncated,leading-zero,Vba,Split,Truncate,Truncated,Leading Zero,我试图从一个长度不同的ID(即TEXT008758、TEXT65647095、TEXT065、TEXT0000000047398473等)中的数字中分割文本-没有押韵或原因。我已经编写了下面的UDF代码来从文本中提取数字,效果非常好 问题:执行UDF时,前导零继续从ID截断。我需要领先的Zeor,因为它们是身份证公约的一部分。我不确定子进程是否能更有效地将其转换为文本格式并保留前导零或其他内容。获取.csv或.txt文件不是一个选项,因此我想知道您的向导同伴可以提供哪些替代方案。我是python

我试图从一个长度不同的ID(即TEXT008758、TEXT65647095、TEXT065、TEXT0000000047398473等)中的数字中分割文本-没有押韵或原因。我已经编写了下面的UDF代码来从文本中提取数字,效果非常好

问题:执行UDF时,前导零继续从ID截断。我需要领先的Zeor,因为它们是身份证公约的一部分。我不确定子进程是否能更有效地将其转换为文本格式并保留前导零或其他内容。获取.csv或.txt文件不是一个选项,因此我想知道您的向导同伴可以提供哪些替代方案。我是python的用户,因此潜入VBA世界工作是一个学习过程。。叹息


提前谢谢

没有责备。零被保留。如果在单元格中使用该函数,则Excel会将结果转换为数字并删除零,因此在执行该函数之前,请将单元格格式化为文本。我可以将单元格保留为常规单元格,保留
0
s。返回的结果为字符串。你怎么称呼它?@GSerg如果我在执行函数之前格式化为文本,我已经尝试过了。。它保持为“NUMBERVALUE(numsplit(AH1238,TRUE))”文本。@ScottCraner参见上文^——通过公式调用它删除
NUMBERVALUE
,如果需要前导的
0
s,则需要将其保留为字符串
Option Explicit
Public Function NumSplit(ByVal x As String, LeaveNums As Boolean) As Variant
Dim y As String, z As String, n As Long
    For n = 1 To Len(x)
        y = Mid(x, n, 1)
        If LeaveNums = False Then
            If y Like "[A-Za-z ]" Then z = z & y
        Else
            If y Like "[0-9 ]" Then z = z & y
        End If
    Next n
NumSplit = Trim(z)

End Function