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