nik*_*iko 13 excel vba trim excel-vba
trim和trim$vba有什么区别?今天我偶然在vba中使用了left和trim函数,编译器说cant find project or library
当我用谷歌搜索它时,在论坛上我发现用户使用了这些
vba.trim("string")
Run Code Online (Sandbox Code Playgroud)
他回答用vba作为函数的前缀.并且令人惊讶的是它也在我的电脑上工作.但我找到了这些功能
trim and trim$
left and left$
leftb and leftb$
Run Code Online (Sandbox Code Playgroud)
我想知道什么是修剪和修剪$.我想找到差异因此我开始谷歌它但结果是修剪忽略$ alphabet.
我只是很想知道它.我怀疑修剪是vba功能和修剪$是excel表功能.但我们必须Application.worksheetfunction使用excel功能吗?任何人都可以区分修剪和修剪$.
bre*_*tdj 21
虽然Issun已按照要求回答了您的问题,但我有足够的细节我希望发布以提供进一步的答案而不是评论.
该字符串的版本是显著快〜取决于从我的测试历年的数据类型约10-30%.虽然这通常不明显,但在大型数据集上运行时,性能会有所不同.所以对我来说,使用字符串而不是变体版本是明智的选择.
下面的示例适用于字符串,因此它在此范围的较高端显示速度优势
我在这两个公共插件中都将这些函数与变量数组结合使用,因为这些程序通常用于整个工作表甚至整个工作簿
对于您的问题,此链接是一个很好的参考
vbBinaryCompare而不是vbTextCompareVbNullString比快"",虽然两者都将错过含有细胞',而IsEmpty发现这一点,AND分成两个单独的IFs以提前逃脱)Else路径(即False测试可能比更合适True)Mid$在作业的左侧使用.来自VBA的隐藏功能
Sub QuickTimer1()
Dim lngRow As Long
Dim dbTime As Double
Dim strSample As String
Dim strShort As String
strSample = "random string"
dbTime = Timer()
For lngRow = 1 To 50000000
strShort = Left$(strSample, 6)
Next lngRow
MsgBox Timer() - dbTime
End Sub
Sub QuickTimer2()
Dim lngRow As Long
Dim dbTime As Double
Dim strSample As String
Dim strShort As String
strSample = "random string"
dbTime = Timer()
For lngRow = 1 To 50000000
strShort = Left(strSample, 6)
Next lngRow
MsgBox Timer() - dbTime
End Sub
Run Code Online (Sandbox Code Playgroud)Trim是变体版本.如果在字符串上使用它,则需要进行不必要的转换.
Trim$是字符串版本.如果您在字符串上使用它,请使用此选项.
有趣的旁注:Application.WorksheetFunction版本与TrimVBA的Trim功能不同.
值得注意的是,Left/Left $,Mid/Mid $,Right/Right $也有变体/字符串版本.在经常循环或使用它们的函数中,如果使用变体版本,你会发现性能受到影响,虽然现代PC并不是很大,但是当你知道它会导致额外的步骤时,不做某事仍然是好的做法.你不需要.
trim接受变量作为参数,同时trim$接受字符串.
使用trim $有一些性能优势(因为你没有从变种转换),但你可能不会注意到它们.
编辑:
我通过检查对象浏览器来解决这个问题.当您在VBA编辑器中时,按F2键可以搜索功能并更熟悉框架.
| 归档时间: |
|
| 查看次数: |
17621 次 |
| 最近记录: |