如何在Excel VBA中把字符串转换成数字(3种方法)

  • Share This
Hugh West

在这篇文章中,我们将讨论在Excel VBA中把字符串转换成数字的几种方法。 我们将看到如何使用内置函数和使用它们创建一个自定义函数来把字符串转换成数字的VBA代码示例。

下载实践工作手册

下载这本练习手册,在阅读本文时进行练习。

将字符串转换成数字.xlsm

在Excel VBA中把字符串转换成数字的3种方法

1. 使用类型转换函数将字符串转换为数字

Excel提供了几个内置的 类型转换功能 我们可以在我们的VBA代码中使用它们来轻松地从字符串数据类型转换为不同的数据类型。

1.1 字符串转整数

要转换 绳子 整数 ,我们可以用 CInt函数 在我们的代码中。 CInt函数 只需要 一个论点 而这应该是一个 数值 让我们在Visual Code Editor中试试下面的代码。

 Sub StringToNumber() MsgBox CInt(12.3) End Sub 

新闻 F5 运行 编码 输出显示在 MsgBox .

CInt函数 皈依 数字字符串 价值 ("12.3" )到一个 整数 12.

要进一步了解 CInt函数 ,在代码编辑器中运行下面的代码,并且 观察 结果 .

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CInt(Cells(i, 2)) Next End Sub 

ǞǞǞ 产量 是在这里,在以下 屏幕截图 .

代码解释

在这段代码中,我们使用了 对于...下一个循环 以应用 CInt函数 在细胞串上的 B3:B7。 ǞǞǞ 产出 被打印在单元格中 C3:C7。 我们用 细胞功能 来指定输入值和打印输出值的位置。

结果

CInt函数 转换为25.5 下一个整数 26 另一方面,它 改为10.3 10,不是11 当一个十进制的数字值小于0.5时,该函数会向下舍入到相同的数字。 但 小数 数字字符串值变成了 下一个整数 号码,如果它是 等于 大于0.5。

注意事项

该整数值的范围在 -32,768 32,767 如果我们把一个数字值,即 不在此范围内 ,Excel将显示一个 错误 .

1.2 字符串转长字符串

ǞǞǞ CLng功能 将一个数字字符串值转换为一个 长数据类型 它的工作原理与CInt函数类似。 关键区别在于它的 范围 之间的 -2,147,483,648 2,147,483,647.

 运行的代码在这里,如下。  Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub 

在这里,细胞 B3:B9 含有一些 数字字符串值 ,以及 皈依 l 数字 是在细胞中 C3:C9。 ǞǞǞ CLng功能 皈依 -32800 32800 成功到 长数字 其中 CInt函数 但它也会得到一个 错误 如果输入 数值 超出范围。

1.3 字符串转十进制

使用 CDec功能 我们可以 转换 a 数字字符串值 到一个 十进制数据类型。 运行 以下代码为 转换 数值 在细胞中 B3:B7 十进制数据类型。

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CDec(Cells(i, 2)) Next End Sub 

1.4 字符串转单

在这个例子中,我们将把输入的字符串变成 单一数据类型 (单精度浮点)数字。 为此,我们需要使用 CSng功能 .

单一数据类型的范围- (i) -3.402823E38 -1.401298E-45 负面的 数字。

(二) 1.401298E-45 3.402823E38 积极的 数字。

在visual basic编辑器中运行以下代码。

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub 

在输出中,单元格 B3:B9 含有一些 数字字符串值。 转换成单一数据类型的数字 是在细胞中 C3:C9。 但它也会得到一个 错误 如果输入 数值 超出范围。

1.5 字符串转为双数

在这个例子中,我们将把输入的字符串变成 双重数据类型 (双精度浮点)数字。 为此,我们需要使用 CDbl功能 .

双重数据类型的范围- (i) -1.79769313486231E308 -4.94065645841247E-324 负面的 数字。

(二) 4.94065645841247E-324 1.79769313486232E308 积极的 数字。

在visual basic编辑器中运行以下代码。

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub 

在输出中,单元格 B3:B9 含有一些 数字字符串值 转换后的双数据类型数字 是在细胞中 C3:C9。 但它也会得到一个 错误 如果输入 数值 超出范围。

1.6 字符串转货币

ǞǞǞ 货币数据类型 是方便的,当计算涉及到 此外,如果我们希望在以下方面更加准确 固定的 - 计算 ,使用货币数据类型是一个不错的选择。 我们需要使用 CCur功能 来将一个字符串转换为 货币数据类型 的数据类型。 范围 -922,337,203,685,477.5808 922,337,203,685,477.5808.

码到 转换 数字字符串值 的细胞 B3:B7 货币数据类型 在细胞中 C3:C7 下面是这里。

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CCur(Cells(i, 2)) Next End Sub 

1.7 字符串到字节

ǞǞǞ CByte功能 将数字字符串值转换为 字节数据类型 的范围是 0到255。

编码 详见如下 :

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CByte(Cells(i, 2)) Next End Sub 

在输出中,单元格 B3:B9 含有一些 数字字符串值。 转换后的字节数据类型数字 是在细胞中 C3:C9。 但它也会得到一个 错误 如果输入 数值 超出范围。

阅读更多。 如何在Excel中使用VBA将字符串转换为长字符串

类似读物

  • 在Excel VBA中把字符串转换成双数(5种方法)
  • 如何用Excel VBA将文本转换为数字(3个带宏的例子)
  • 修复Excel中转换为数字的错误(6种方法)
  • 如何在Excel中把科学符号转换成数字(7种方法)

2. 使用自定义VBA函数在Excel中检查并将字符串转换为数字

在这个例子中,我们要做一个 自定义功能 然后我们可以 使用 这个 自定义功能 在我们的 工作表 像一个 内置功能 在这个例子中,我们将使用 CInt函数 转换 字符串到 整数 在创建 自定义功能。 我们也可以用所有 其他功能 中所述的 方法一 转化为 字符串 不同的数据类型 现在,请按照下面的步骤来实现这一目标。

步骤。

  • 在这里,在细胞中 B3:B7。 我们有一些数字性的字符串值。

  • 现在,在Visual Basic编辑器中。 拷贝 粘贴 以下代码,然后按 Ctrl + S 保存
 Function StringToNumber(inputStr) Dim convertedNum As Variant If IsNumeric(inputStr) Then If IsEmpty(inputStr) Then convertedNum = "-" Else convertedNum = CInt(inputStr) End If Else convertedNum = "-" End If StringToNumber = convertedNum End Function 
  • 在细胞中 C3 , 开始打字 功能名称 ( 字符串到数字 ).Excel将 自动建议 功能 来使用。 新闻 Tab键 以进入该功能。

  • 单元格参考B3 作为唯一的参数。

  • 现在,按 进入 关闭括号后。

  • 找出 填充手柄 右下角 细胞的 C3 应用 对细胞的功能 C4:C7。

  • 最后的输出是来自字符串值的令人垂涎的整数。

3. 在Excel中把选定的单元格范围转换为数字的VBA代码

在这个例子中,我们将转换一个 范围 选定的细胞 如果任何单元格包含一个 非数字 中的值,输出将是一个 破折号(-)线 而不是 .跟随 步骤 :

  • 选择单元格 B3:B6 数字字符串 价值和 B7 其中包含一个 非数字

  • Visual Basic编辑器 拷贝 粘贴 下面的 编码 .
 Sub StringToNumber() Dim convertedNum As Variant For Each cell In Selection If IsNumeric(cell) Then If IsEmpty(cell) Then convertedNum = "-" Else convertedNum = CInt(cell) End If Else convertedNum = "-" End If With cell .Value = convertedNum.HorizontalAlignment = xlCenter End With Next cell End Sub 
  • 现在,按 F5 运行 产量 如以下所示 屏幕截图 .

笔记

  • 我们用 函数isNumeric 第2次和第3次 方法 在我们的VBA代码中,检查一个表达式是否可以转换为一个数字。
  • 方法一 我们使用内置函数(CInt, CDbl, CSng.....)来实现。 转换数字字符串值 数字 但如果有一个 非数字值 ,它将显示一个 错配错误 .

总结

现在,我们知道了如何在Excel中把字符串值转换为数字。 希望它能鼓励你更自信地使用这一功能。 有任何问题或建议,不要忘记把它们放在下面的评论框中。

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.