string - 将字符串变量转换为整数的最有效 VBA 代码

标签 string excel vba optimization

我有以下代码可以转换以下格式的字符串:"G##"为整数 ##

Dim str As String
Dim int As Integer
str = "G14"
int = CInt(Right(str, Len(str) - 1))

但这将定期在大型数据库上运行。

我想知道是否有任何可能更有效的替代方案(尤其是关于最后一行)?

最佳答案

在我的测试中使用

 Mid$(strTest, 1, 1) = "0"
 lngTest = CLng(strTest)

比使用快 30-40%
CLng(Right$(strTest, Len(strTest) - 1))

这反过来又比
CLng(Right(strTest, Len(strTest) - 1))

我用了Long因为它在速度方面优于 Integer
对于多个替换,RegExp可能会变成它自己的。开销太高,无法证明此示例的合理性

测试码
Sub Test()
Dim dbTime As Double
Dim strTest As String
Dim lngTest As Long
Dim lngCnt As Long

strTest = "G14"

dbTime = Timer
For lngCnt = 1 To 1000000
lngTest = CLng(Right$(strTest, Len(strTest) - 1))
Next lngCnt
Debug.Print Timer - dbTime

dbTime = Timer
For lngCnt = 1 To 1000000
lngTest = CLng(Right(strTest, Len(strTest) - 1))
Next lngCnt
Debug.Print Timer - dbTimer


dbTime = Timer
For lngCnt = 1 To 1000000
Mid$(strTest, 1, 1) = "0"
lngTest = CLng(strTest)
Next lngCnt
Debug.Print Timer - dbTime
End Sub

关于string - 将字符串变量转换为整数的最有效 VBA 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12095696/

相关文章:

vba - 合并多个 CSV 文件

sql - 在 Sql 查询中使用单元格中的日期或命名范围

excel - 满足下一个空白单元格条件时中止宏

python - 如何在导出到 Excel 文件之前设置 Python DataFrame 中的多行样式

vba - excel vba - 将两个单元格的内容连接到另一个

python - 找不到正确的字符串结尾

Java:为什么我的书开始将字符串变量与空字符串连接起来,特别是使用 System.out.print()?

Python:在字符串中查找模式

C++ - string.replace 不起作用

javascript - 如何使用 vba 从 Datastore.prime 中抓取数据