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