gpt4 book ai didi

vba - VBA 中的 Trim() 和 Trim$() 有什么区别?

转载 作者:行者123 更新时间:2023-12-01 16:53:33 26 4
gpt4 key购买 nike

vba 中的 trimtrim$ 有什么区别?今天无意中在vba中使用left和trim函数时,编译器说找不到项目或库

当我用谷歌搜索它时,在一个论坛上我发现用户使用这样的方式

 vba.trim("string")

他回答说函数的前缀是 vba。令人惊讶的是它也可以在我的电脑上运行。但是我发现了这些功能

 trim and trim$ 
left and left$
leftb and leftb$

我想知道什么是trim 和trim$。我想找到差异,所以我开始用谷歌搜索,但结果是修剪忽略了 $ 字母。

我只是想知道它。我怀疑trim是vba函数而trim$是excel工作表函数。但是我们有 Application.worksheetfunction 来使用 Excel 函数,对吧?有人能区分trim 和trim$ 吗?

最佳答案

虽然 Issun 已按要求回答了您的问题,但我有足够的详细信息,我想发布以提供进一步的答案而不是发表评论。

字符串版本明显更快大约快了 10-30%,具体取决于我多年来测试的数据类型。虽然这通常并不明显,但在大型数据集上运行时,这是一个性能差异。因此对我来说,使用字符串而不是变体版本是理所当然的。

下面的示例适用于字符串,因此它显示了在此范围高端的速度优势

我在我的 public addins 中将这些函数与变体数组结合使用。因为这些程序通常用于整个工作表甚至整个工作簿

This link对于您的问题来说,这是一个很好的引用,而且远远超出了

  1. 使用 vbBinaryCompare 进行比较,而不是使用 vbTextCompare
  2. 优化空字符串
  3. 更换前进行测试
  4. 使用内置常量,VbNullString"" 更快,尽管两者都会错过包含 ' 的单元格,而 IsEmpty 选择这个
  5. 优化循环(将 AND 分解为两个单独的 IF 以尽早逃脱)
  6. 优化 If 测试,首先返回最常见的 bool 结果,而不是通过 Else 路径运行(即 False 测试可能比 True)
  7. 在作业的左侧使用 Mid$。来自 hidden features of 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

关于vba - VBA 中的 Trim() 和 Trim$() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7982220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com