Excel 从字符串中提取int以进行连接

Excel 从字符串中提取int以进行连接,excel,concatenation,excel-2013,vba,Excel,Concatenation,Excel 2013,Vba,我正在使用excel 2013,我正在尝试将包含字符串的变量与包含字符串的另一个变量的一部分组合起来。然而,我需要的部分将是一个整数,我希望前导零删除 比如我有 LName = Application.WorksheetFunction.VLookup(OCR, Sheets("Whitelist").Range("Whitelist"), 3, False) 此变量将是某人的姓氏。 我也有 OCR = Right(Left(UserIn, 3), 2) & Left(Right(Us

我正在使用excel 2013,我正在尝试将包含字符串的变量与包含字符串的另一个变量的一部分组合起来。然而,我需要的部分将是一个整数,我希望前导零删除

比如我有

LName = Application.WorksheetFunction.VLookup(OCR, Sheets("Whitelist").Range("Whitelist"), 3, False)
此变量将是某人的姓氏。 我也有

OCR = Right(Left(UserIn, 3), 2) & Left(Right(UserIn, 11), 9)
这将是个人成员ID,看起来类似于DC000123456。 OCR的长度始终为11个字符,前两个始终为字母,后九个始终为以未知数字0开头的数字

我想创建一个名为concat的变量,它将是姓氏,然后是空格,以及id中的数字,前面是0

我试过了

Concat = Lname &" "&Right(OCR, 9)
Concat = Lname &" "&Cint(Right(OCR, 9))
Concat = Lname &" "&Cstr(Cint(Right(OCR, 9)))
所有这些都会产生错误


我想删除前导零。很抱歉,忘了包括最终结果的示例。

我不知道您是否要保留或删除ID前面的零

鉴于此:

LName = "Matteo"
OCR = "DC000123456"
如果您想保留它们:

Concat = LName & " " & Right(OCR, 9)
Debug.Print Concat
>>> Matteo 000123456
如果要删除它们,请执行以下操作:

Concat = LName & " " & CDbl(Right(OCR, 9))
Debug.Print Concat
>>> Matteo 123456

*注意:如果需要使用函数
CDbl
,您的
CInt
将产生溢出,因为如果您想保留或删除ID前面的零,ID号大于允许的
整数的大小

鉴于此:

LName = "Matteo"
OCR = "DC000123456"
如果您想保留它们:

Concat = LName & " " & Right(OCR, 9)
Debug.Print Concat
>>> Matteo 000123456
如果要删除它们,请执行以下操作:

Concat = LName & " " & CDbl(Right(OCR, 9))
Debug.Print Concat
>>> Matteo 123456

*注意:需要使用函数
CDbl
,您的
CInt
将产生溢出,因为ID号大于允许的
整数

非常感谢!虽然我认为整数可以容纳-2147483648到2147483647,而且因为我只看到一个9位数的数字,所以我想。@ChadPortman您会被“长整数”(在VBA中,声明为“长整数”)弄糊涂。“短整数”(在VBA中,声明为“整数”)可以容纳32000个左右(有关更多详细信息,请查看此项:)。函数“CInt()”返回一个短整数,在您的情况下,堆栈溢出。感谢您的解释。非常感谢!虽然我认为整数可以容纳-2147483648到2147483647,而且因为我只看到一个9位数的数字,所以我想。@ChadPortman您会被“长整数”(在VBA中,声明为“长整数”)弄糊涂。“短整数”(在VBA中,声明为“整数”)可以容纳32000个左右(有关更多详细信息,请查看此项:)。函数“CInt()”返回一个短整数,在您的情况下,堆栈溢出。感谢您的解释。