文字列型関数を使う


Left関数よりもLeft$関数の方が速いよって話ですね。普通のLeft関数は、内部形式文字列型のバリアント型を返すけど、Left$関数は文字列型を返すと。バリアント型よりは文字列型の方が速いから、Left$関数の方が速いと。理論的には、そういうことです。

Sub Test1()
    Dim i As Long, A As String
    For i = 2 To 100001
        A = Left(Cells(i, 1), 1)
    Next i
End Sub
Sub Test2()
    Dim i As Long, A As String
    For i = 2 To 100001
        A = Left$(Cells(i, 1), 1)
    Next i
End Sub
Left Left$ %
1 0.328 0.313 95.4%
2 0.328 0.312 95.1%
3 0.328 0.328 100.0%
4 0.313 0.328 104.8%
5 0.313 0.313 100.0%
6 0.328 0.312 95.1%
7 0.329 0.328 99.7%
8 0.312 0.328 105.1%
9 0.328 0.313 95.4%
10 0.297 0.328 110.4%
平均 0.320 0.320 100.0%

変わらないですね。これも昔の話です。理論的にはその通りでも、現在の高性能パソコンでは、そうした理論的な遅さは誤差と考えていいでしょう。