从字符串数组创建字符串.最快的方法?

PBe*_*ezy 6 vba

我有一个字符串数组(A到E),我想加入一个字符串("ABCD E").我应该遍历数组还是使用Join函数?

Dim MyArray(5) as String
Dim MyString as String

MyArray(1) = "A"
MyArray(2) = "B" 
MyArray(3) = "C" 
MyArray(4) = "D" 
MyArray(5) = "E" 
Run Code Online (Sandbox Code Playgroud)

哪个更快,更明智?

这个?

MyString = MyArray(1)
For i = 2 To 5
    MyString = MyString & " " & MyArray(i)
Next
Run Code Online (Sandbox Code Playgroud)

或这个?

MyString = Join(MyArray, " ")
Run Code Online (Sandbox Code Playgroud)

Dic*_*ika 4

对于 100k 阵列

Sub test()

    Dim aArr(1 To 100000) As String
    Dim i As Long
    Dim sString As String
    Dim snTimer As Single

    FillArray aArr

    snTimer = Timer

    For i = 1 To 100000
        sString = sString & Space(1) & aArr(i)
    Next i

    Debug.Print Timer - snTimer
    snTimer = Timer

    sString = Join(aArr, Space(1))

    Debug.Print Timer - snTimer

End Sub
Run Code Online (Sandbox Code Playgroud)

加入是明显的赢家

 2.050781 
 0 
Run Code Online (Sandbox Code Playgroud)

原因是每次连接&内存时都必须重新分配以容纳新数组(无论如何都是所有字符串)。使用 Join,您只需将一个数组(源数组)复制到另一个数组(字符串),并且 VBA 已经知道其大小。